検索

ホームページ  >  に質問  >  本文

nginx - C 言語、vc コンパイラ cl、関数の先頭で変数を宣言せずに変数をサポートする方法

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

リーリー

エラーはngx_int_t variable_header_status = NGX_OK;

にあります。 リーリー

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

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

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

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

全員に返信(3)返信します

  • 为情所困

    为情所困2017-05-16 17:28:29

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

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

    を使用してコンパイルします

    返事
    0
  • 怪我咯

    怪我咯2017-05-16 17:28:29

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

    -c99

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 17:28:29

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

    返事
    0
  • キャンセル返事