c++ - C++头文件的组织

标签 c++ dependencies header-files forward-declaration

假设我有一个带有 typedef A、B 和 C 的头文件 header1.h。B 使用 A,C 使用 B,因此 typedef 的顺序是强制的。现在我决定 typedef B 确实应该位于它自己的头文件(header2.h)中。但我不能从 header1 中包含 header2 (因为这样 typedef B 将在 C 之前),我也不能从 header2 中包含 header1。我尝试转发声明类型,但我认为这只在指向它们时才有效。否则编译器仍然会给出“不完整类型”错误。

最佳答案

我认为你在这里唯一能做的就是将每个 typedef 移动到它自己的 header 中,然后你可以以任意顺序包含它们。像这样:

a.h

#ifndef A_H
#define A_H

typedef int A;

#endif // A_H

b.h

#ifndef B_H
#define B_H

#include "a.h"

typedef A* B;

#endif // B_H

c.h

#ifndef C_H
#define C_H

#include "b.h"

typedef B& C

#endif // C_H

关于c++ - C++头文件的组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36423176/

相关文章:

c++ - Netbeans 无法解析符号 c++11

c++ - 检查函数的特征接受某些参数但不返回类型

java - 非商业用途的库依赖兼容性

json - 告诉 npm install 摆脱不再需要的依赖项

c++ - 从 C# 调用 C++ 函数

c++ - 使用 WinCrypt/CryptoAPI 验证基于 OpenPGP 的 RSA 签名

ios - 为什么授权可以帮助我们避免依赖?

ios - 使用 CocoaPods 将头文件复制到包含文件夹

c - 如何在 C 中实现 stdarg

c - 我应该在哪里列出 c 和 makefile 中的 header