我正在尝试交叉编译我的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'
我完全不知道为什么会发生这种情况,还有其他的getline在程序中有效,我试图在代码和编译器命令中定义变量_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
任何帮助将不胜感激,提前谢谢。
答案 0 :(得分:15)
问题解决了,我所要做的就是添加:
#define _GNU_SOURCE
在每个标题文件中,之前包含stdio.h,非常简单。
我想这个信息在程序员之间是可以理解的,因为我无法在网上任何地方找到它,并且不得不亲自询问我的C编程教授,即便如此,我们在跟踪源代码时遇到了一些麻烦。
非常感谢。
答案 1 :(得分:1)
更改编译器行以包含-E
选项并重定向输出。使用此选项时,编译器将仅预处理您的文件。这两个版本都可以这样做,sb2. getline()
通常可以找到stdio.h
。通过查看两个版本的预处理输出,您应该能够看到包含getline()
的位置。