我如何包含多个具有相同包含的类?

cal*_*pto 3 c++ class include

我如何包含两个.h/class文件#include "h_file.h"?两者都需要.h文件定义,并且都包含在主程序中.如何防止重新定义.h定义(导致编译器无法编译)?

我有:

main.cpp
class1.h/class1.cpp
class2.h/class2.cpp
h_file.h
Run Code Online (Sandbox Code Playgroud)

GMa*_*ckG 9

使用包括警卫:

#ifndef INCLUDE_GUARD_IDENTIFIER_GOES_HERE
#define INCLUDE_GUARD_IDENTIFIER_GOES_HERE

// code for header

#endif
Run Code Online (Sandbox Code Playgroud)

第二次包含它,它实际上是一个空文件.


选择标识符有许多不同的方法,INCLUDE_GUARD_IDENTIFIER_GOES_HERE每种方法都有基本原理.就个人而言,我这样做FILE_DIRECTORY_FILE_NAME_CLASS/FUNCTION_NAME_HPP:

#ifndef UTILITY_FOO_HPP
#define UTILITY_FOO_HPP

namespace utility
{
    void foo();
}

#endif
Run Code Online (Sandbox Code Playgroud)

其他人将生成GUID并将它们附加到基本名称,如下所示:

INCLUDE_GUARD_A629F54A136C49C9938CB33EF8EDE676
Run Code Online (Sandbox Code Playgroud)

这几乎可以保证它永远不会发生碰撞.最终,这取决于你.但是,无论你想出什么,请确保它符合规则:在任何地方都没有双重下划线,并且不要用下划线后跟大写字母来启动它.

  • "这几乎可以保证它永远不会碰撞" - 好吧,那个没有,现在你已经把它发布在互联网上;-) (2认同)