Windows では、vc コンパイラー cl.exe を使用して nginx のサードパーティ モジュールをコンパイルすると、次のようなエラー コードが報告されます:
リーリーエラーはngx_int_t variable_header_status = NGX_OK;
:
調べてみると、c のコンパイラでは関數(shù)ブロックの先頭に変數(shù)を宣言する必要があるのですが、c にはそのような必要がありません。宣言された 3 つの変數(shù)を関數(shù)の先頭に置くだけです。
同じコードをコンパイルして gcc に渡すことができます。
より高度な C をサポートできる vc のコンパイル オプションがあるかどうかお聞きしたいです。私が使用している vc コンパイラーはすでに vs2012
に付屬しているものです。まさか。
VC は最新の 2013 年でも C89 標準をサポートしています。これは本質的に C++ コンパイラーであり、必要な構文は C99 標準以降のみサポートされているため、GCC はコンパイルして渡すことができます。
解決策は 2 つあります:
1 つは、C89 標準に準拠するようにコードを変更することです。
2. mingw
Visual Studio 2012 は C99 をサポートしていませんが、Visual Studio 2013 はサポートしています。
參考:C99ウィキペディア