h文件和主文件。如何在主文件中包含所有这些文件?我包括第一个.h就好了,在第二个我使用静态变量,以便它可以包含在主要但我不能包括的第三个。我怎么能包括它?我正在使用Dev C ++。
答案 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文件的目的)。
一个次要(但很有趣)的例外是模板元编程,它可以完全在头文件中完成(几乎完全),编译器生成所有源代码,因为模板被“使用”(但模板本身仍然可以编译) “大小为零”,因此对标题很好 - 通常必须在标题中定义。