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++ - Visual Studio 2005 C++ 应用程序想要以管理员身份运行

c++ - 我应该使用 SQLite3 bind_int 函数吗?

PHP 输出带标题的文件附件

c - 在 C 中使用 read() 和 write() 代替 scanf() 和 printf()

使用 PPL 不锁定临界区的 C++ 并行循环

c++ - C++错误:没有匹配的构造函数用于初始化

Java:在 MS Word 文档中放置标题

wcf - 以编程方式将自定义 WCF header 添加到终结点以实现可靠 session

PHP,如何设置包含路径

api - 在 cmake 中使用包括相邻子项目