我在#pragma once
和.cpp
中使用.hpp
,因此我会收到使用它的每个文件的警告。我没有找到任何禁用此类警告的选项,只有#ifndef MY_FILE_H #define MY_FILE_H /*...*/ #endif
。
那么你建议我用#pragma once
s替换每个ifndef
吗?
:
#define MYFILE_H
// all the header
和其他文件:
#ifndef MYFILE_H
#include "myfile.hpp"
#endif
// the rest of the file
您怎么看?这样使用它会更好吗?或者有一个选项可以禁用GCC中的#pragma once
警告,我不知道?
答案 0 :(得分:12)
常见的方法是仅将警卫放在.h文件中:
#ifndef MYFILE_H
#define MYFILE_H
// all your myfile.hpp here
#endif
或
#pragma once
// all your myfile.hpp here
其余的文件(其他.cpp)对守卫不应该做任何事情。你不应该这样做警告。
答案 1 :(得分:-4)
确实可以始终使用#ifndef
防护,但只是在编译使用#pragma once
的源时删除警告我建议在编译时使用-w
选项。
e.g。 gcc -w -o <output file> <input file(s)>