C コードをコンパイルしようとしたときに最近発生したコンパイル エラーにより、デフォルトの C 標準は何なのかという疑問が生じました。 g コンパイラを使用する場合。関連するコードには、ファイル ストリームと文字列の操作が含まれます。コマンド「g example.cpp」を使用してコンパイルすると、文字列と const char* 間の変換に関連するエラーが発生してコンパイルが失敗しました。ただし、コマンド「g -std=c 17 example.cpp」を使用すると問題は解決しました。
-std フラグが指定されていない場合に g で使用されるデフォルトの標準を調査するために、 g の特定のバージョンでサポートされている C 標準のデフォルト バージョン:
Bash: 次のコマンドを実行します:
g++ -dM -E -x c++ /dev/null | grep -F __cplusplus
PowerShell: 次のコマンドを実行します:
g++ -dM -E -x c++ NUL | Select-String __cplusplus
これらのコマンドの出力には、次のような行が表示されます:
#define __cplusplus 199711L
「__cplusplus」に続く値は、デフォルトの C 標準バージョンを示します。この例では、C 98 (199711) です。
プログラマとして、-std フラグを指定するかどうか、または常に指定するかどうかは、いくつかの条件に依存します。要素:
一般に、暗黙のデフォルト設定による予期しない動作を避けるために、-std フラグを使用して C 標準を明示的に指定することをお勧めします。 C 標準を制御することで、プログラマは最適なパフォーマンス、コードの正確性、移植性を確保できます。
以上がg のデフォルトはどの C 標準ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。