这很可能是一个非常愚蠢的问题,但我需要确定。我在头文件中得到了一个类声明,例如。
#ifndef file_H
#define file_H
class ex{
private:
public:
};
#endif
并且我被要求在同一个文件中编写方法定义,我已经这样做了,我的问题是“#endif”是否保留在类声明之后的位置,还是放在我的文件末尾在类方法定义之后?.
在文件末尾。
这种形式的
#ifndef
模式的目标是防止相同的声明或定义在编译单元中出现两次的情况。
这样做是因为一个 C 文件可能包含多个 H 文件,而链上的某个位置可能又包含相同的文件。如果您只是在没有这些的情况下运行预处理器,您将拥有 H 文件的多个副本。这样,您就有多个副本,但预处理器会忽略第一次遇到后的所有内容。
由于您不应该多次定义任何内容,因此如果您必须将方法定义放在头文件中,请将它们放在
#endif
.