【发布时间】:2014-04-17 14:11:55
【问题描述】:
我在我的.cpps 和.hpps 中使用#pragma once,因此我会收到每个使用它的文件的警告。我没有找到任何禁用这种警告的选项,只有#ifndef MY_FILE_H #define MY_FILE_H /*...*/ #endif 的东西。
那么你会建议我用ifndefs 替换每个#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.6 Pragma 指令):任何无法被实现识别的
pragma都将被忽略。 由于 pragma 会给您带来问题,特别是如果编译器无法识别它并且您多次包含标头,但标头保护在任何地方都可以使用,请使用标头保护。编译器通常足够聪明,可以发现标头保护。 -
只是一个信息:如果您需要删除未知
#pragmas 的警告,请使用-Wno-unknown-pragmas标志 -
确切的警告信息是什么?
#pragma once in main file?相关:gcc.gnu.org/bugzilla/show_bug.cgi?id=89808 | stackoverflow.com/questions/56563679/…
标签: c++ pragma gcc-warning