學習筆記 #pragma GCC diagnostic ignored 「-Wformat「 的使用

2020-09-30 12:00:55

#pragma GCC diagnostic ignored "-Wformat"的使用

在GCC下,#pragma GCC diagnostic ignored用於表示關閉診斷警告,忽略診斷問題。

格式:

#pragma GCC diagnostic ignored "-Wformat"

範例程式如下:

#include <stdio.h>

/************************************************************************/
int test1(void)
{
    return;
}

//關閉警告,診斷忽略該函數沒有返回值
#pragma GCC diagnostic ignored "-Wreturn-type"

int test2(void)
{
    return;
}

/************************************************************************/
int main(int argc, char* argv[])
{
    test1();
    test2();
    
    return 0;
}

在gcc下編譯

gcc -o test test.c -Wall

函數test1會提示警告不帶返回值,而函數test2沒有警告。

test.c: 在函數‘test1’中:
test.c:6:5: 警告: 在有返回值的的函數中,‘return’不帶返回值 [-Wreturn-type]

如果遮蔽掉

//#pragma GCC diagnostic ignored "-Wreturn-type"

重新編譯,則兩個函數都是提示警告

test.c: 在函數‘test1’中:
test.c:6:5: 警告: 在有返回值的的函數中,‘return’不帶返回值 [-Wreturn-type]
test.c: 在函數‘test2’中:
test.c:14:5: 警告: 在有返回值的的函數中,‘return’不帶返回值 [-Wreturn-type]

[參考資料]
GCC, the GNU Compiler Collection
GCC, Diagnostic Pragmas