4

我正在尝试为 maemo 环境(GNU)交叉编译我的应用程序。正常编译应用程序时,一切正常,但是当它通过 sb2 编译时,出现以下警告:

$ sb2 gcc -D_GNU_SORCE -o app -Wall -g -I.......//don't think this is relevant

 In file included from wifi_collector_menu.c:50:
 wifi_collector_list.c: In function `show_net_apns':
 wifi_collector_list.c:777: warning: implicit declaration of function `getline'

我对为什么会发生这种情况感到完全困惑,在程序中还有其他 getlines 可以工作,我试图在代码和编译器命令中定义变量 _GNU_SOURCE(不是同时)这是行显然导致警告的代码:

size_t bytesnum = MAX_ESSID;
size_t bytes_read;
char *netname = NULL;
printf("Enter name of selected network:");
bytes_read=getline(&netname,&bytesnum,stdin);//This line

任何帮助将不胜感激,在此先感谢。

4

2 回答 2

20

问题解决了,我所要做的就是添加:

#define _GNU_SOURCE

每个头文件中,在包含 stdio.h之前,真的很简单。

我猜这个信息在程序员之间是已知的,因为我无法在网上的任何地方找到它,并且不得不亲自询问我的 C 编程教授,即便如此我们在追踪源头时也遇到了一些麻烦。

不管怎么说,还是要谢谢你。

于 2011-12-13T18:09:32.270 回答
1

更改您的编译器行以包含该-E选项并重定向输出。只有在使用此选项时,编译器才会预处理您的文件。对两个版本都执行此操作,sb2. getline()通常在stdio.h. 通过查看两个版本的预处理输出,您应该能够看到getline()包含的位置。

于 2011-12-12T21:40:47.710 回答