5

这很可能是一个非常愚蠢的问题,但我需要确定。我在头文件中得到了一个类声明,例如。

#ifndef file_H
#define file_H

class ex{
private:

public:
};

#endif

并且我被要求在同一个文件中编写方法定义,我已经这样做了,我的问题是“#endif”是在类声明之后保持在它的位置还是在我的文件末尾之后类方法定义?

4

1 回答 1

6

在文件的末尾。

这种模式的这种形式的目标#ifndef是防止相同的声明或定义在编译单元中出现两次的情况。

这样做是因为一个 C 文件可能包含多个 H 文件,而这些文件在链上的某处又可能包含同一个文件。如果您只是在没有这些的情况下运行预处理器,您将拥有 H 文件的多个副本。这样,您有多个副本,但预处理器会在第一次遇到后忽略所有内容。

由于您不应该多次定义任何内容,因此如果您必须将方法定义放在头文件中,请将它们放在#endif.

于 2010-05-16T04:13:21.517 回答