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

时间:2011-12-22 08:13:15

标签: c++

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

2 个答案:

答案 0 :(得分:6)

定义移动到头文件是非常良好做法,以便它们可以在不同的编译单元中使用。这可以确保您的所有编译单元始终使用相同的类和常量定义(请参阅here以获得更详细的示例说明)。

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

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

static const int foo = 42;

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

答案 1 :(得分:0)

这根本不是一个坏习惯。重用代码通常是一种很好的做法。