C での C 標準検出
C では、標準コンパイラのバージョンがコードの動作と互換性に影響を与える可能性があります。 g を使用してコンパイルする場合、デフォルトの標準を理解することが重要です。
次のコード スニペットを検討してください:
#include <fstream> #include <string> int main() { std::string filename = "input.txt"; std::ifstream in(filename); return 0; }
g example.cpp コマンドを使用して Windows でこのコードをコンパイルすると、 std::string から const char* への変換に関連するリンカー エラーが原因で失敗します。ただし、 g -std=c 17 example.cpp を使用して特定の C 標準を指定すると、この問題は解決します。
g で使用されるデフォルトの C 標準を確認するには、次のコマンドを実行できます。
g++ -dM -E -x c++ /dev/null | grep -F __cplusplus
たとえば、Ubuntu 4.8.4 バージョンの g でこのコマンドを使用すると、次のようになります。出力:
#define __cplusplus 199711L
これは、このバージョンの g のデフォルトの C 標準が C 98 であることを示します (199711L は、C 標準の 1997 年 11 月改訂版を表します)。
常に次のようにすることをお勧めします。 g を使用してコンパイルするときに、目的の C 標準を明示的に指定します。これにより、コードが意図した標準に準拠していることが保証され、時代遅れの標準や望ましくない標準の使用によって生じる可能性のある互換性の問題が回避されます。
以上がg で使用されるデフォルトの C 標準を決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。