如何在OS X上使用--pedantic-errors进行编译?

时间:2010-02-23 18:06:26

标签: c macos gcc header-files

这是一个简单的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设置为指向特殊的库位置。

1 个答案:

答案 0 :(得分:1)

您可以修改/usr/include/mach/i386/_structs.h:91以使用__extension__关键字。虽然你不得不想知道为什么不是这种情况。

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

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