* [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