首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >枚举:它们可以在.h中执行,还是必须留在.cpp中?

枚举:它们可以在.h中执行,还是必须留在.cpp中?
EN

Stack Overflow用户
提问于 2009-08-16 15:25:00
回答 7查看 50.3K关注 0票数 39

如果我有类似这样的东西:

代码语言:javascript
复制
enum
{
    kCP_AboutBox_IconViewID = 1,
    kCP_AboutBox_AppNameViewID = 2,
    kCP_AboutBox_VersionViewID = 3,
    kCP_AboutBox_DescriptionViewID = 4,
    kCP_AboutBox_CopyrightViewID = 5
};

在我的.cpp中,它可以在.h中使用吗?

更重要的是,除了类定义、变量等之外,您还可以在.h中放入哪些其他较少了解的内容

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-08-16 15:49:27

.h文件本质上就是代码,它在编译时放在包含它的任何.cpp (或.h文件)之上。因此,您只需将.cpp文件中的任何代码放入.h中,它就应该可以很好地编译。

然而,重要的是设计。如果需要将代码暴露给包含.h文件的代码,则应该将代码(例如枚举)放在.h文件中。但是,如果枚举仅特定于头的.cpp实现中的代码,则应该只将其封装在.cpp文件中。

票数 56
EN

Stack Overflow用户

发布于 2009-08-16 15:37:18

请记住在报头中使用header include guards,例如:

代码语言:javascript
复制
#ifndef header_name_h
#define header_name_h
...
#endif

这有助于您在多个标头包含您的标头时遵守一个定义规则。

更新:

后来我发现Visual Studio和gcc的最新版本都允许:

代码语言:javascript
复制
#pragma once

另外,永远不会有:

代码语言:javascript
复制
using namespace <name>;

因为这会导致奇怪的歧义问题。

票数 16
EN

Stack Overflow用户

发布于 2009-08-16 15:28:11

是的,您的枚举定义可以放在头文件(.h)中。不过,不要在.cpp文件中重复定义。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1284529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档