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の代わりに使用してください。エラーのよりきめ細かい制御については、Clangのマニュアルを参照してください。-pedantic-Werror

于 2012-11-30T00:45:00.793 に答える