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