2

这是一个简单的 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开关并重新编译,但由于一个原因和另一个原因,这不在卡片中。有没有办法克服这个错误?也许下载和安装另一个 C 库?我正在本地处理需要在远程机器上编译的代码,所以很遗憾,我无法将 Makefile 设置为指向特殊的库位置。

4

1 回答 1

1

您可以修改 /usr/include/mach/i386/_structs.h:91 以使用__extension__关键字。尽管您不得不想知道为什么现在还不是这样。

另一个文件级#pragma GCC system_header解决方案是在 _structs.h 的顶部添加指令。

要在构建级别修复它,请添加-isystem /usr/include/mach/i386/到编译器选项。然后将包含该文件夹中的所有标题,就好像它们是系统标题一样(应该已经是这种情况,但显然不是)。

于 2010-02-23T18:34:49.460 回答