【发布时间】:2017-07-24 15:27:12
【问题描述】:
在 Visual Studio 中创建资源文件时,IDE 会自动生成一个名为 resource.h 的头文件,其中包含以下文本:
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by BackupRestore.rc
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
如您所见,cmets 说它们是“新对象的默认值”。这到底是什么意思?默认情况下它们是否在其他任何地方引用,如果没有,它们将在哪里使用?我正在尝试使用最少的代码和文件创建一个项目,并测试了删除 resource.h 文件,没有它,解决方案似乎构建得很好,所以我想知道它是否必不可少,或者删除它是否会导致未来问题。
总结: resource.h 文件及其内容是做什么用的? 默认情况下是否在其他地方使用定义的宏? 如果有的话,程序员什么时候可以引用它们/在代码中使用它们? 它们是必不可少的吗?删除它们会造成未来的问题吗?
提前致谢 - 请注意我是 C++ 和宏的新手。
【问题讨论】:
-
Resource.h 包含在项目的 .rc 文件中定义的资源 ID。它允许您的 Windows 应用程序引用其各种资源:对话框布局、图标、位图和本地化文本字符串。
-
那么如果它被移除会发生什么?有什么持久的影响吗?我的 .rc 文件中没有提到任何已定义的宏(以 _APS 开头的宏)
-
@Matt 它们被 RC 编辑器使用(读取和写入) - 弄乱它们并破坏您的项目,因为 RC 编辑器在创建资源时不知道要使用的下一个值。
-
Resource.h 是源文件集的重要组成部分。不要删除!删除 APS* 宏会影响 Visual Studio 资源管理器,其中包括对话框编辑器、文本资源编辑器等...应用程序。
-
我的资源文件只是在查看其属性时提供 DLL 的版本。您之前关于“请勿删除”的 cmets 是否仍然有效?
标签: c++ macros resource-files