我在我的.cpp
s和.hpp
s中使用#pragma once
,因此我得到每個使用它的文件的警告。我還沒有找到任何選項來禁用這種警告,只有#ifndef MY_FILE_H #define MY_FILE_H /*...*/ #endif
的東西。刪除#pragma一次警告
那麼你會推薦我用ifndef
s代替每個#pragma once
嗎?
在標題:
#define MYFILE_H
// all the header
,並在其他文件:
#ifndef MYFILE_H
#include "myfile.hpp"
#endif
// the rest of the file
你覺得呢,是它更好地使用它這樣的嗎?或者有一個選項可以禁用GCC中的#pragma once
警告,我不知道?
您使用的是哪個版本的GCC?也許這是一個不支持'#pragma once'的老版本? –
有些舊版本的GCC抱怨它不知道的編譯指示。 C99和C11標準要求(ISO/IEC 9899:2011§6.10.6Pragma指令):_任何這樣的 'pragma'不能被實現識別的都被忽略._因爲編譯指示會給你帶來問題,特別是如果編譯器不能無法識別它,並且您不止一次包含標題,但標頭守衛無處不在,請使用標頭警衛。編譯器通常足夠聰明,可以識別標頭警衛。 –
只是一個信息:如果您需要刪除未知'#pragma'的警告,請使用'-Wno-unknown-pragmas'標誌 –