有关条件编译(ifndef)的快速问题

问题描述 投票:0回答:1

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

#ifndef file_H
#define file_H

class ex{
private:

public:
};

#endif

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

c++ gcc header-files include-guards
1个回答
6
投票

在文件末尾。

这种形式的

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

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

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

#endif
.

© www.soinside.com 2019 - 2024. All rights reserved.