nginx - C 言語、vc コンパイラ cl、関数の先頭で変数を宣言せずに変数をサポートする方法
淡淡烟草味
淡淡烟草味 2017-05-16 17:26:29
0
3
999

Windows では、vc コンパイラー cl.exe を使用して nginx のサードパーティ モジュールをコンパイルすると、次のようなエラー コードが報告されます:

リーリー

エラーはngx_int_t variable_header_status = NGX_OK;

にあります。 リーリー

調べてみると、c のコンパイラでは関数ブロックの先頭に変数を宣言する必要があるのですが、c にはそのような必要がありません。宣言された 3 つの変数を関数の先頭に置くだけです。

同じコードをコンパイルして gcc に渡すことができます。

より高度な C をサポートできる vc のコンパイル オプションがあるかどうかお聞きしたいです。私が使用している vc コンパイラーはすでに vs2012

に付属しているものです。
淡淡烟草味
淡淡烟草味

全員に返信(3)
为情所困

まさか。
VC は最新の 2013 年でも C89 標準をサポートしています。これは本質的に C++ コンパイラーであり、必要な構文は C99 標準以降のみサポートされているため、GCC はコンパイルして渡すことができます。

解決策は 2 つあります:
1 つは、C89 標準に準拠するようにコードを変更することです。
2. mingw

を使用してコンパイルします
いいねを押す +0
刘奇

コンパイルコマンドを追加します

-c99

いいねを押す +0
曾经蜡笔没有小新

Visual Studio 2012 は C99 をサポートしていませんが、Visual Studio 2013 はサポートしています。
参考:C99ウィキペディア

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート