我正在开发一个相当简单的 C 程序,其中包含一个主文件 vector.c、vector.h,但我遇到了这些问题:
- 如果在两个 c 文件中都需要它提供的声明,我应该将 .h 文件的包含放在哪里?
- 我应该把所有 3 个文件中需要的 typedefs 放在哪里?
无论我做什么,似乎 gcc 都会抱怨。
任何人都可以回答这些问题,或者指向我可以阅读的资源吗?
我正在开发一个相当简单的 C 程序,其中包含一个主文件 vector.c、vector.h,但我遇到了这些问题:
无论我做什么,似乎 gcc 都会抱怨。
任何人都可以回答这些问题,或者指向我可以阅读的资源吗?
如果在两个 c 文件中都需要它提供的声明,我应该将 .h 文件的包含放在哪里?
将include
语句放入需要标头定义的每个 C 文件中,在您的情况下,在main.c 和 vector.c中。使用包含保护总是一个好主意,如果编译器抱怨符号已经定义或多次定义,则需要使用。
我应该把所有 3 个文件中需要的 typedefs 放在哪里?
这取决于:
typedefs
对于您的矢量 API 是必需的或特定于您的,则将它们放在vector.h中。typedefs
不是矢量接口的一部分,那么它们可能属于第三个头文件,例如common.h 之类的文件,也可能包含在其他所有文件中文件中的项目。很自然:
typedef
s 是声明,所以它们非常适合放在头文件中。有时,如果您的标头包含标头,您可能需要防止多重包含,但对于您的情况,这不是必需的。请记住,每个 C 文件都是自行编译的。当然,永远不要#include
与 C 文件一起使用。