2017-10-27 26 views
1

코드 스 니펫이 있습니다. 여기에 #pragma을 넣었습니다.Wunknown-pragmas gcc 경고 수정 방법

warning: ignoring #pragma warning [-Wunknown-pragmas] 

코드 : 이

#include<iostream> 

using namespace std; 

int main(){ 
    cout<<"Helloworld\n"; 

    #ifdef __GNUC__ 
    #pragma warning(push) 
    #pragma warning(disable : warning) 
    cout<< "I am in warning free section"<<endl; 
    #pragma warning(pop) 

    #endif 

    return 0; 
} 

가 어떻게 코드 레벨에서이 문제를 해결할 수

Wunknown-pragmas 경고를 제공?

+1

AFAIK, pragma는 컴파일러마다 다릅니다. 귀하의 사건에 해당한다고 확신합니까? –

+2

나는'#ifdef __GNUC__'에 대해 조금 혼란 스럽다. 컴파일러가 말한 것처럼'#pragma'를 읽을 수 없으므로 무시됩니다. 명령 행 옵션'-Wunknown-pragmas'를 사용하면 경고 메시지가 나타납니다. Btw. [GCC pragma] (https : //gcc.gnu)에 반대하여 [MS VC pragma] (https://msdn.microsoft.com/en-us/en-en/library/2c8f766e.aspx)처럼 보입니다. .org/onlinedocs/gcc/Diagnostic-Pragmas.html). – Scheff

답변

0

GCC에서 pragma를 사용하는 방법이 아닙니다. 그것은 더 같이해야한다 :

#include<iostream> 

//example function that 
//complains if its result is unused 
__attribute__((__warn_unused_result__)) int foo() { return 42; } 

using namespace std; 
int main(){ 
    cout<<"Helloworld\n"; 
    foo(); 

    #ifdef __GNUC__ 
    #pragma GCC diagnostic push 
    #pragma GCC diagnostic ignored "-Wunused-result" 
    foo(); //no complaints here 
    cout<< "I am in warning free section"<< endl; 
    #pragma GCC diagnostic pop 

    #endif 

    return 0; 
} 

자세한 내용은 gcc manual를 참조하십시오.