c++ - 如何获得没有 cpp 的头文件?

标签 c++ header include compiler-warnings definition

我的头文件包含以下内容:

#define PAUSE system("pause");
typedef unsigned char uint8;
static const double PI = 3.14159265358979323846;
static const double oneDegInRads = PI / 180;

我一直在将这个头文件包含到许多 .cpp 文件中,而没有出现任何问题。当我想清理我的代码时,我正在修复警告,主要是一些小东西,比如“将 double 转换为 float ,可能丢失数据”,或“无符号到有符号不匹配”警告。所以我在设置中打开了“将编译器警告视为错误”,因此通过使用它我可以严格评估我的代码有多糟糕并相应地修复它。打开它后,我的解决方案将无法构建,并显示错误:

Code                         Description                                  File   
C2220     "Warning treated as error - no 'object' file generated     myDefinitions.h

我知道为什么会这样,因为我打开了那个特定的设置。我尝试通过以下方式抑制和禁用此警告:

#pragma warning (disable : 2220)

我也尝试过遵循“每个 header 规则一个 CPP”,制作一个“myDefinitions.cpp”并仅包含 header 而不包含其他任何内容,但错误消息仍然出现。

所以我的问题是:

1:我可以有一个没有 .cpp 的头文件吗(不忽略警告)?

2:如果没有,我该如何制作我的 .cpp,因为我已经尝试过但失败了?

3:您可以建议有什么更好的解决方案,让一个页面包含您经常使用的所有重要定义?我需要能够将它们包含在您想要的任何位置。

最佳答案

Visual Studio 正在尝试将您的 myDefinitions.h 头文件编译为目标文件。

它不应该那样做!只有 .cpp 源文件应该被翻译成目标文件。

我猜你可能在某个时候将 .cpp 文件重命名为 myDefinitions.h,而 Visual Studio 不理解你想要更改其文件“类型”。

尝试删除您的 myDefinitions.h 文件,然后创建一个新的 myDefinitions.h 文件,从新文件对话框中选择正确的文件类型。然后,您可以将旧内容放入新标题中。

关于c++ - 如何获得没有 cpp 的头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36958460/

相关文章:

c++ - main() 方法中包含的类

c++ - WEC7中如何断开与Connection Manager的连接

c++ - 尾随返回类型供引用

c++ - 使用从 B 继承的具体函数实现从 A 继承的虚函数

c++ - C++ 的库路径。失败?

header - 蝗虫传递标题

java - 使用 View 绑定(bind)膨胀类 ImageView 时出错

c# - Visual Studio 2008 中 C# 项目中的 C++ 项目引用

php - 防止Mp3在浏览器PHP中播放

javascript - 检测是否已注入(inject) Chrome 扩展内容脚本/内容脚本包含 guard