我在我的.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'标志 –