将结构/常量保持在单独的标题中

use*_*725 3 c++

我有一个VECTOR结构,它包含3个整数,i,j和k.我需要在多个头文件中使用此结构.将所有#defines和结构,所有常量移动到标记为"Constants.h"的单独头文件,或者我应该在每个头文件中定义相同的结构(我当前使用它)被认为是不好的做法吗?

Bjö*_*lex 6

定义移动到头文件中是一种很好的做法,这样它们就可以用在不同的编译单元中.这可以确保您的所有编译单元始终使用相同的类和常量定义(有关示例,请参阅此处以获得更详细的说明).

它是,但是,不好的做法,以把他们都在一个头文件.这使得使用此头文件的所有编译单元都重新编译,即使在完全不相关的更改上也是如此.你应该在某种意义上将所有属于一起的东西组合在一起 - 不相关的东西应该在不同的标题中.为方便起见,提供一个包含所有标题的标题有时很有用,但这样的功能只应用于快速原型设计或仔细考虑其后 - 编译时间很快就会变得很长.此答案列出了有关如何组织标题的一些想法.

请注意,您应该尝试避免使用C++中的常量宏 - static const T例如:

static const int foo = 42;
Run Code Online (Sandbox Code Playgroud)

宏不是类型安全的,并且由于扩展方式可能会引入细微的错误.此问题列出了宏实际有用的一些情况.