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能编译通过。
解决办法有二:
一,就是把代码更改为符合C89标准。
二,使用mingw编译
编译命令里添加
-c99
Visual Studio 2012 不支持 C99,但是 Visual Studio 2013 支持。
参考:C99 维基百科