2017-04-14 24 views
-1

私は、CとC++ファイルを混在させたライブラリをndk-build(r10e)でコンパイルしています。私は、交流ファイルでAndroid ndk build:CとC++の警告レベルを指定する

file.cpp:4:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] 
    for (int pos = 0; pos != size; ++pos) 

:私はこのコードをコンパイルするときしかし、

LOCAL_CPPFLAGS += -Wall 
LOCAL_CPPFLAGS += -Wno-unused-parameter 
LOCAL_CFLAGS += -Wall 
LOCAL_CFLAGS += -Wno-unused-parameter 

::cppのファイルで

void func2() 
{ 
    unsigned int size = 3; 
    int pos; 
    for (pos = 0; pos != size; ++pos) 
    { 

    } 
} 

を、私は期待される警告を受ける私のMKファイルには、ラインを持っていますどんな警告もしないでください...

の警告レベルを指定する適切な方法はありませんファイル? ボーナスの質問:CC++の両方に警告レベルを指定する方法はありますか(線の再現を避けるため)LOCAL_CPPFLAGS/LOCAL_CFLAGS

+0

Cコンパイラはこのコードを警告しないかもしれないと考えましたか?あなたは他の警告を試しましたか?ちょっとした考え。 –

+0

NDKの古代版を使用していない限り、 'LOCAL_CFLAGS'はCとC++コードの両方に適用されます。 – Michael

+0

少なくともGCCの場合、 '-Wall'はC++コードに対して' -Wsign-compare'を有効にします。 Cコードでは '-Wextra'(または' -Wsign-compare')が必要です。 (https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.htmlを参照) – Michael

答えて

2

GCCドキュメントの3.8 Options to Request or Suppress Warningsセクションによれば、-Wallは、C++コードの-Wsign-compareのみを有効にします。 Fo Cコード-Wextraを使用するか、明示的に-Wsign-compareを有効にする必要があります。

ボーナス質問:Cとの両方のための警告レベルを指定する方法はありますC++

はい、LOCAL_CFLAGSは、CおよびC++コードの両方に適用されます。 (source

関連する問題