私のC知識をC99からC11にアップグレードし始めています。私のコンパイラがデフォルトでC11を理解できるかどうか、あるいは-std=c11
フラグが必要かと思います。 -std=c99
フラグでコンパイルしていない単純なc11ソースコードでどうすればテストできますか? C++ 11標準もありますが、私はthis articleから始まります。最小限のc11ソースコード
auto
宣言を使って簡単なコードで試してみましたが、C99でも有効なキーワードなので少し失われてここで尋ねる。
この質問を発行した後、私は__STDC__VERSION__
というマクロに関する回答を受け取り、this answerのコードも試しました。
驚くべきことには、私のテストの出力は以下の通りであった。
compile line: gcc main.c -std=c11 -o main.exe
oputput of main.exe: c11
compile line: gcc main.c -std=c99 -o main.exe
oputput of main.exe: c99
compile line: gcc main.c -o main.exe
oputput of main.exe: gnu90
状況は、私はまだありませんコンパイル時に、実行時にコンパイラの機能を得ることができるということです。 nullptrは、C++ 11内にのみ利用可能であるよう
int main()
{
int *p = nullptr;
}
:C++私はC++ 11でのみコンパイルし、このサンプルコードを見つけることができたため
。
:私は強くあなたはコンパイラがこれを好きなように設定されていることをどのバージョンを確認することができ、C.
プログラムによりを学ぶ場合は特に、常にこの2つのスイッチを使用することをお勧めします[C11](https://en.wikipedia.org/wiki/C11_(C_standard_revision))と[C++ 11](https://en.wikipedia.org/wiki/C%2B%2B11)を混在させていると思います)。 C11は 'auto'型の控除を追加しませんでした.C++ 11はそれを行いました。 CとC++は2つの非常に異なる言語ですが、共通の構文を共有しています。 –