【发布时间】:2018-07-09 13:56:17
【问题描述】:
我有 3 个文件:
-file 1 具有 table1 结构和作用于表 2 结构的函数
// header file table 1
#include "table_2.h"
typedef struct{...}table1;
void * doSomethingGivenTable2(table2 * t2);
-file 2 具有 table2 结构和作用于表 1 结构的函数
// header file table 2
#include "table_1.h"
typedef struct{...}table2;
void * doSomethingGivenTable1(table1 * t1);
-file 3 使用文件 1 和 2 中的两个结构
#include "table_1.h"
#include "table_2.h"
// this is fine because I am including both of them in a separate file
文件 3 中发生的情况很好,但文件 1 和文件 2 为结构生成 error: unknown type name,因为我在另一个文件中包含每个文件的标题。我还定义了使用其他结构的函数。我可以在将这两个功能留在原处的同时解决此问题吗?如果没有,那我还有什么选择?
谢谢
【问题讨论】:
-
显示完整的错误,包括源代码行号。并使用
"包含“自定义”标题。 -
阅读“前向声明”和“标题包括警卫”。
-
@EugeneSh。我不明白你的意思。我应该在答案或问题中包含“自定义”吗?
-
@DevSolar 谢谢。我会的。
-
Eugene 的意思是
#include <...>通常保留给标准库头文件,#include "..."用于其他所有内容。几乎所有编译器都不会在两者之间产生实际差异,但这是一种很好的风格。