C ++多个头文件,只有一个主文件

时间:2011-04-03 14:03:42

标签: c++

h文件和主文件。如何在主文件中包含所有这些文件?我包括第一个.h就好了,在第二个我使用静态变量,以便它可以包含在主要但我不能包括的第三个。我怎么能包括它?我正在使用Dev C ++。

1 个答案:

答案 0 :(得分:4)

我猜你错过了以下其中一项:

// FILE: MyHeader1.hpp
#ifndef MyHeader1_hpp  // sentinel
#define MyHeader1_hpp

...your header code...

#endif

这些标记应该在所有标题上,并且通常在所有模板实现文件中,以防止在您无法预期订单时重复包含(几乎从未预料到)。

(有些人比哨兵更喜欢"#pragma once,但由于那不符合C ++标准,我不是粉丝,尽管它几乎可以跨平台工作。)

... ... OR

不要忘记,标题必须编译为0

请勿:

// FILE: MyHeader1.hpp
#ifndef MyHeader1_hpp
#define MyHeader1_hpp

int my_global;   // NO!  NOT IN A HEADER!

extern int my_global;   // Fine, instantiate in the *.cpp

#endif

标头包含接口定义,允许单通道编译器在模块之间建立类型大小和接口“连接”。它们不应该包含编译为大于零字节的逻辑或状态(这是* .cpp文件的目的)。

一个次要(但很有趣)的例外是模板元编程,它可以完全在头文件中完成(几乎完全),编译器生成所有源代码,因为模板被“使用”(但模板本身仍然可以编译) “大小为零”,因此对标题很好 - 通常必须在标题中定义。