这是一个简单的C文件:
#include <stdio.h>
#include <stdlib.h>
int
main() {
printf("hi there!\n");
return 0;
}
使用gcc -ansi -pedantic -pedantic-errors
进行编译可以得到:
In file included from /usr/include/i386/_structs.h:38,
from /usr/include/machine/_structs.h:31,
from /usr/include/sys/_structs.h:57,
from /usr/include/sys/signal.h:154,
from /usr/include/sys/wait.h:116,
from /usr/include/stdlib.h:65,
from test.c:2:
/usr/include/mach/i386/_structs.h:91: error: type of bit-field ‘__invalid’ is a GCC extension
有关GCC扩展的更多错误。我知道我可以删除-pedantic-errors
开关并重新编译,但出于某种原因,这不在卡片中。有没有办法克服这个错误;或许下载&amp;安装另一个C库?我在本地处理需要在远程计算机上编译的代码,所以我不能将Makefile设置为指向特殊的库位置。
答案 0 :(得分:1)
您可以修改/usr/include/mach/i386/_structs.h:91以使用__extension__关键字。虽然你不得不想知道为什么不是这种情况。
另一个文件级解决方案是在_structs.h的顶部添加#pragma GCC system_header
指令。
要在构建级别修复它,请将-isystem /usr/include/mach/i386/
添加到编译器选项中。然后将包含该文件夹中的所有标题,就好像它们是系统标题一样(应该已经是这种情况,但显然不是)。