2017-04-14 1 views
-1

C 및 C++ 파일을 혼합하는 라이브러리를 ndk-build (r10e)로 컴파일하고 있습니다. CPP 파일에서Android ndk 빌드 : C 및 C++ 모두에 대한 경고 수준 지정

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

    } 
} 

, 내가 경고 기대 얻을 :이 코드를 컴파일 할 때, 그러나

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

을 : 내 MK 파일은 선이 교류 파일에서

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

I 경고를 얻지 마십시오 ...

에 대한 경고 수준을 지정하는 올바른 방법은 없습니다.파일? 보너스 질문 : 간단한 변수를 사용하여 CC++에 대한 경고 수준을 지정하는 방법이 있습니까 (LOCAL_CPPFLAGS/LOCAL_CFLAGS 행 복제 방지)?

+0

C 컴파일러가이 코드에 대해 경고하지 않을 수도 있다고 생각하십니까? 다른 경고를 시도해 보셨습니까? 그냥 생각. –

+0

'LOCAL_CFLAGS'는 고대 버전의 NDK를 사용하지 않는 한 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)