`clang -ansi`扩展

时间:2012-11-30 00:33:44

标签: c gcc clang c89

我最近遇到了一个问题,下面的玩具示例使用clang -ansi干净地编译:

int main(void)
{
    for (int i = 0; 0; );
    return i;
}

但是gcc -ansi会出现以下错误:

a.c: In function ‘main’:
a.c:3:5: error: ‘for’ loop initial declarations are only allowed in C99 mode
a.c:3:5: note: use option -std=c99 or -std=gnu99 to compile your code

使用clang -ansi -pedantic进行编译表明正在使用C99扩展名。

a.c:3:10: warning: variable declaration in for loop is a C99-specific feature [-pedantic,-Wc99-extensions]
    for (int i = 0; 0; );
         ^
1 warning generated.

clang允许哪些其他扩展名与-ansi选项一起使用?如何禁用它们?

1 个答案:

答案 0 :(得分:4)

如果您尝试在-ansi模式下停用扩展程序,那么您希望将这些警告视为错误:使用-pedantic-errors代替-pedantic-Werror(或两者)。有关错误的更细粒度控制,请参阅Clang manual