所以我在头文件中有这个结构,称为h1.h
typedef struct{
int a;
int b;
special_t test;
} randomDataType
所以我包含了包含special_t声明的头文件。两个头文件中的所有函数都没有被命名相同,我也看不到循环依赖如何发挥作用,因为第二个头文件中声明的函数只能通过h1.h
然而,我在其他标题中的所有内容都有'先前声明的 _ _'错误。这是为什么?
答案 0 :(得分:3)
听起来你的头文件中没有多个包含警戒。除非在很少见的情况下,当你到达它们时你会知道,C头文件应该写成这样:
/* This is h1.h.
This is its license.
This is what you will find here. */
#ifndef H1_H__
#define H1_H__
all declarations go here
#endif /* h1.h */
除了评论之外,#ifndef
... #endif
块之外不应该有任何内容,您需要选择宏名称以使其不与任何其他标题冲突 - 假设所有 C头文件中都有这个构造,或者非常类似的东西。
编译器只处理其内容一次。许多编译器都认识到这种结构,甚至不会再次打开文件(只要宏仍然被定义)。因此,您可以安全地包含来自其他标头的标头(可能只需要一些声明),而不必担心其他文件的作用。