ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] warnings
@ 2004-06-28  9:10 php-coder
  2004-06-28  9:27 ` Yakov Bezrukov
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: php-coder @ 2004-06-28  9:10 UTC (permalink / raw)
  To: community

0000100101011110100100101::28.06.2004::0110001001001000100111100100010

  Привет, Linuxоиды!
  
  Извниняюсь, что пишу сюда, но больше не знаю где спросить. При
  компиляции программы получаю предупреждения:
  
  In file included from main.c:20:
  functions.inc.h: In function `get_tracks_names':
  functions.inc.h:100: warning: implicit declaration of function `getline'
  functions.inc.h:109: warning: assignment makes integer from pointer without a cast
  functions.inc.h:118: warning: assignment makes integer from pointer without a cast
  main.c: In function `main':
  main.c:39: warning: pointer targets in passing arg 1 of `strlen' differ in signedness

  Весь вечер возился, но в чем причина и как устранить это так и не
  понял.
  
  В файле functions.inc.h:

  void get_tracks_names(int tracks, unsigned char *tracks_names_array)
       {
        char *buff_pointer = NULL;
  ...
  100 getline(&buff_pointer, &buff_length, stdin);
  ...
  109 tracks_names_array[i] = buff_pointer;
  ...
  118 tracks_names_array[i] = NULL;
      }

  В файле main.c:
  39 printf("Вы ввели: %s\nДлина строки: %d\n", tracks_names_array[i], strlen(tracks_names_array[i]));

  Буду благодарен за любую помощь...
  
-- 
  С уважением, php-coder (mailto:php-coder[at]ngs[dot]ru)
  Registered Linux User #327594
  ALT Linux Master 2.2

010010010010010001010101100::Linux RuleZz!::10001001000100010001000111



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] warnings
  2004-06-28  9:10 [Comm] warnings php-coder
@ 2004-06-28  9:27 ` Yakov Bezrukov
  2004-06-28  9:36   ` Re[2]: " php-coder
  2004-06-28  9:30 ` php-coder
  2004-06-28  9:40 ` Andrey Rahmatullin
  2 siblings, 1 reply; 11+ messages in thread
From: Yakov Bezrukov @ 2004-06-28  9:27 UTC (permalink / raw)
  To: community

On Monday 28 June 2004 16:10, php-coder wrote:

>   In file included from main.c:20:
>   functions.inc.h: In function `get_tracks_names':
>   functions.inc.h:100: warning: implicit declaration of function
> `getline' functions.inc.h:109: warning: assignment makes integer from
> pointer without a cast functions.inc.h:118: warning: assignment makes
> integer from pointer without a cast main.c: In function `main':
>   main.c:39: warning: pointer targets in passing arg 1 of `strlen'
> differ in signedness
>
>   Весь вечер возился, но в чем причина и как устранить это так и не
>   понял.
>
>   В файле functions.inc.h:
>
>   void get_tracks_names(int tracks, unsigned char
> *tracks_names_array) {
>         char *buff_pointer = NULL;
>   ...
>   100 getline(&buff_pointer, &buff_length, stdin);

подключи заголовок stdio.h, там находится объявление это функции.

>   ...
>   109 tracks_names_array[i] = buff_pointer;

	Вполне логично ругается :) ты присваиваешь элементу массива символов 
указатель на символ.


>   ...
>   118 tracks_names_array[i] = NULL;
Аналогично.
>       }
>
>   В файле main.c:
>   39 printf("Вы ввели: %s\nДлина строки: %d\n",
> tracks_names_array[i], strlen(tracks_names_array[i]));
>
>   Буду благодарен за любую помощь...


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] warnings
  2004-06-28  9:10 [Comm] warnings php-coder
  2004-06-28  9:27 ` Yakov Bezrukov
@ 2004-06-28  9:30 ` php-coder
  2004-06-28 10:51   ` Andrey Rahmatullin
  2004-06-28  9:40 ` Andrey Rahmatullin
  2 siblings, 1 reply; 11+ messages in thread
From: php-coder @ 2004-06-28  9:30 UTC (permalink / raw)
  To: php-coder

0000100101011110100100101::28.06.2004::0110001001001000100111100100010

    Здравствуйте, php-coder!
    Отвечаю на Ваше письмо:

> functions.inc.h:100: warning: implicit declaration of function `getline'

    Забыл указать, что все у меня вроде как декларировано. В файле
    main.c указано:

    #define _GNU_SOURCE
    #include <stdio.h>
    #include "functions.inc.h"

    А сама функция getline находится как раз в файле functions.inc.h
    Как я понимаю все должно работать, но почему-то говорит, что не
    объявлена функция... Пробовал подключать stdio в самом файле с
    функциями, но предупреждение не исчезло... :((
  
-- 
  С уважением, php-coder (mailto:php-coder[at]ngs[dot]ru)
  Registered Linux User #327594
  ALT Linux Master 2.2

010010010010010001010101100::Linux RuleZz!::100010010001000100010001110



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re[2]: [Comm] warnings
  2004-06-28  9:27 ` Yakov Bezrukov
@ 2004-06-28  9:36   ` php-coder
  2004-06-28  9:45     ` Yakov Bezrukov
  0 siblings, 1 reply; 11+ messages in thread
From: php-coder @ 2004-06-28  9:36 UTC (permalink / raw)
  To: Yakov Bezrukov

0000100101011110100100101::28.06.2004::0110001001001000100111100100010

    Здравствуйте, Yakov!
    Отвечаю на Ваше письмо:

> Вполне логично ругается :) ты присваиваешь элементу массива символов
> указатель на символ.

    Упс... это у меня вроде как массив указателей...

-- 
  С уважением, php-coder (mailto:php-coder[at]ngs[dot]ru)
  Registered Linux User #327594
  ALT Linux Master 2.2

010010010010010001010101100::Linux RuleZz!::100010010001000100010001110



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] warnings
  2004-06-28  9:10 [Comm] warnings php-coder
  2004-06-28  9:27 ` Yakov Bezrukov
  2004-06-28  9:30 ` php-coder
@ 2004-06-28  9:40 ` Andrey Rahmatullin
  2 siblings, 0 replies; 11+ messages in thread
From: Andrey Rahmatullin @ 2004-06-28  9:40 UTC (permalink / raw)
  To: community

[-- Attachment #1: Type: text/plain, Size: 1536 bytes --]

On Mon, Jun 28, 2004 at 04:10:20PM +0700, php-coder wrote:
>  Извниняюсь, что пишу сюда, но больше не знаю где спросить.
Это Ваша прога или чужая? Еслм чужая, но компилится и работает -
нормально.

>  functions.inc.h:100: warning: implicit declaration of function `getline'
>  100 getline(&buff_pointer, &buff_length, stdin);
Ф-я getline объявлена в файле stdio.h, но этот файл не включен в текущий
исходник. Допишите в него #include <stdio.h>

>  functions.inc.h:109: warning: assignment makes integer from pointer without a cast
>  109 tracks_names_array[i] = buff_pointer;
>  118 tracks_names_array[i] = NULL;
Гм. tracks_names_array имеет тип char*, тогда tracks_names_array[i] имеет
тип char. Но ему присваивается значение типа "указатель" (неважно на что).
Это очень странно.

>  main.c:39: warning: pointer targets in passing arg 1 of `strlen' differ in signedness
>  39 printf("Вы ввели: %s\nДлина строки: %d\n", tracks_names_array[i], strlen(tracks_names_array[i]));

В совокупности c предыдущим варнингом всё понятно. tracks_names_array -
это массив символов (его тип - char*), т.е. строка. Но по задумке это
массив строк, так? Это видно, в частности из того, что
tracks_names_array[i] по задумке явно строка (ей присваивается
значение-указатель, и от нее берется strlen).
Тогда tracks_names_array надо объявить как char**. 

-- 
WBR, wRAR (ALT Linux Team)

> Прошу maintainer'ов принять меры.
> QA Robot вам об этом обязательно скоро напомнит. :)
Только не надо угроз :-)
		-- mike in devel@

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] warnings
  2004-06-28  9:36   ` Re[2]: " php-coder
@ 2004-06-28  9:45     ` Yakov Bezrukov
  2004-06-28 10:25       ` Re[2]: " php-coder
  0 siblings, 1 reply; 11+ messages in thread
From: Yakov Bezrukov @ 2004-06-28  9:45 UTC (permalink / raw)
  To: community

On Monday 28 June 2004 16:36, php-coder wrote:
> 0000100101011110100100101::28.06.2004::011000100100100010011110010001
>0
>
>     Здравствуйте, Yakov!
>
>     Отвечаю на Ваше письмо:
> > Вполне логично ругается :) ты присваиваешь элементу массива
> > символов указатель на символ.
>
>     Упс... это у меня вроде как массив указателей...

А судя по этому:
	unsigned char *tracks_names_array

никак не он :)

-- 
Best regards,
 Yakov Bezrukov                            mailto: subst@gorodok.net
                                           ICQ:    176524902
                                           JID:    nebulam51@jabber.ru


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re[2]: [Comm] warnings
  2004-06-28  9:45     ` Yakov Bezrukov
@ 2004-06-28 10:25       ` php-coder
  2004-06-28 11:05         ` Yakov Bezrukov
  0 siblings, 1 reply; 11+ messages in thread
From: php-coder @ 2004-06-28 10:25 UTC (permalink / raw)
  To: Yakov Bezrukov

0000100101011110100100101::28.06.2004::0110001001001000100111100100010

    Здравствуйте, Yakov!
    Отвечаю на Ваше письмо:
  
> А судя по этому:
>         unsigned char *tracks_names_array
> никак не он :)

    А если написать так: unsigned char *tracks_names_array[] - то это
    будет он?
    
>> > Вполне логично ругается :) ты присваиваешь элементу массива
>> > символов указатель на символ.  
  
    Подразумевается, что я присваиваю элементу массива указателей
    указатель на строку, считанную getline.
  
-- 
  С уважением, php-coder (mailto:php-coder[at]ngs[dot]ru)
  Registered Linux User #327594
  ALT Linux Master 2.2

010010010010010001010101100::Linux RuleZz!::100010010001000100010001110



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] warnings
  2004-06-28  9:30 ` php-coder
@ 2004-06-28 10:51   ` Andrey Rahmatullin
  2004-06-29  3:50     ` Re[2]: " php-coder
  0 siblings, 1 reply; 11+ messages in thread
From: Andrey Rahmatullin @ 2004-06-28 10:51 UTC (permalink / raw)
  To: php-coder

[-- Attachment #1: Type: text/plain, Size: 592 bytes --]

On Mon, Jun 28, 2004 at 04:30:21PM +0700, php-coder wrote:
>    main.c указано:
>    #include <stdio.h>
>    #include "functions.inc.h"
>    А сама функция getline находится как раз в файле functions.inc.h
Где функция используется - там и надо ставить #include <stdio.h>

>    Как я понимаю все должно работать, но почему-то говорит, что не
>    объявлена функция... Пробовал подключать stdio в самом файле с
>    функциями, но предупреждение не исчезло... :((
Странно.  

-- 
WBR, wRAR (ALT Linux Team)

За что вы так любите статические библиотеки? :)
		-- ldv in sisyphus@

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Comm] warnings
  2004-06-28 10:25       ` Re[2]: " php-coder
@ 2004-06-28 11:05         ` Yakov Bezrukov
  2004-06-29  4:00           ` Re[2]: " php-coder
  0 siblings, 1 reply; 11+ messages in thread
From: Yakov Bezrukov @ 2004-06-28 11:05 UTC (permalink / raw)
  To: community

On Monday 28 June 2004 17:25, php-coder wrote:
> 0000100101011110100100101::28.06.2004::011000100100100010011110010001
>0
>
>     Здравствуйте, Yakov!
>
>     Отвечаю на Ваше письмо:
> > А судя по этому:
> >         unsigned char *tracks_names_array
> > никак не он :)
>
>     А если написать так: unsigned char *tracks_names_array[] - то это
>     будет он?
>
Компилятор ругаться будет, не знает как память выделить.

Я бы сделал следующим образом:
	unsigned char **tracks_names_array;
	
	tracks_names_array = new char*[size];
	tracks_names_array[i] = buff_pointer;
	....
	//работа с массивом
	....
	delete[] tracks_names_array;

> >> > Вполне логично ругается :) ты присваиваешь элементу массива
> >> > символов указатель на символ.
>
>     Подразумевается, что я присваиваю элементу массива указателей
>     указатель на строку, считанную getline.

-- 
Best regards,
 Yakov Bezrukov                            mailto: subst@gorodok.net
                                           ICQ:    176524902
                                           JID:    nebulam51@jabber.ru


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re[2]: [Comm] warnings
  2004-06-28 10:51   ` Andrey Rahmatullin
@ 2004-06-29  3:50     ` php-coder
  0 siblings, 0 replies; 11+ messages in thread
From: php-coder @ 2004-06-29  3:50 UTC (permalink / raw)
  To: Andrey Rahmatullin

0000100101011110100100101::28.06.2004::0110001001001000100111100100010

    Здравствуйте, Andrey!
    Отвечаю на Ваше письмо:
  
>> Как я понимаю все должно работать, но почему-то говорит, что не
>> объявлена функция... Пробовал подключать stdio в самом файле с
>> функциями, но предупреждение не исчезло... :((
> Странно.  

    Действительно странно. Но выход я нашел... Даже два:
    
    1) Компилировать с опцией -D_GNU_SOURCE
    2) В main.c заголовки подключались примерно так:

       #include <stdlib.h>
       #include <string.h>
       #include <getopt.h>
       #define  _GNU_SOURCE /* Специально для getline, так как эта
       функция - добавление от GNU */
       #include <stdio.h>

    Если же последние две строчки подключать в самом начале, то
    никаких проблем не возникает... Объяснить я это не могу, но факт
    остается фактом...
  
-- 
  С уважением, php-coder (mailto:php-coder[at]ngs[dot]ru)
  Registered Linux User #327594
  ALT Linux Master 2.2

010010010010010001010101100::Linux RuleZz!::100010010001000100010001110



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re[2]: [Comm] warnings
  2004-06-28 11:05         ` Yakov Bezrukov
@ 2004-06-29  4:00           ` php-coder
  0 siblings, 0 replies; 11+ messages in thread
From: php-coder @ 2004-06-29  4:00 UTC (permalink / raw)
  To: Yakov Bezrukov

0000100101011110100100101::28.06.2004::0110001001001000100111100100010

    Здравствуйте, Yakov!
    Отвечаю на Ваше письмо:
  
> Я бы сделал следующим образом:

    Вы забыли добавить, что это на С++, а я пишу на Сях.

    Ответ я опять-таки нашел сам. Дело в том, что я писал функции по
    отдельности, а теперь настало время их объединить ибо по замыслу
    они зависят друг от друга. Так вот по отдельности все работало, а
    вместе ошибочки эти вылетели... Я вчера посмотрел как было у меня
    написано в исходной функции и подправил, в итоге ошибок нет...

    В functions.inc.h:
    void get_tracks_names(int tracks, char *tracks_names_array[])

    В main.c:

    char *tracks_names_array[LENGTH_TRACKS_ON_CD]
    ...
    get_tracks_names(tracks, tracks_names_array)
  
    Компилируется все ок... а вот работает ооочччень странно...
    getline считывает строки в цикле, так вот на самой первой итерации
    она всегда считывает символ новой строки, причем не спрашивая у
    пользователя берет этот символ откуда-то с потолка... Прошелся по
    бинарнику с помощью kdbg, но ответа не нашел... Ооочччень
    странно... 8-|
  
-- 
  С уважением, php-coder (mailto:php-coder[at]ngs[dot]ru)
  Registered Linux User #327594
  ALT Linux Master 2.2

010010010010010001010101100::Linux RuleZz!::100010010001000100010001110



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2004-06-29  4:00 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-06-28  9:10 [Comm] warnings php-coder
2004-06-28  9:27 ` Yakov Bezrukov
2004-06-28  9:36   ` Re[2]: " php-coder
2004-06-28  9:45     ` Yakov Bezrukov
2004-06-28 10:25       ` Re[2]: " php-coder
2004-06-28 11:05         ` Yakov Bezrukov
2004-06-29  4:00           ` Re[2]: " php-coder
2004-06-28  9:30 ` php-coder
2004-06-28 10:51   ` Andrey Rahmatullin
2004-06-29  3:50     ` Re[2]: " php-coder
2004-06-28  9:40 ` Andrey Rahmatullin

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git