5

我最近遇到了一个问题,以下玩具示例可以使用以下方法进行干净编译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选项进行哪些其他扩展?我怎样才能禁用它们?

4

1 回答 1

4

如果您尝试在-ansi模式下禁用扩展,那么您希望将这些警告视为错误:使用-pedantic-errors而不是-pedantic,或-Werror(或两者)。如需对错误进行更细粒度的控制,请参阅Clang 手册

于 2012-11-30T00:45:00.793 回答