C具有多个文件的程序的资源

时间:2012-07-02 15:20:35

标签: c typedef header-files

我正在研究一个带有主文件vector.c,vector.h的相当简单的C程序,但我遇到了这些问题:

  • 如果在两个c文件中都需要它提供的声明,我在哪里放置.h文件的包含?
  • 我在哪里放置所有3个文件中都需要typedef?
无论我做什么,似乎gcc都会抱怨。

任何人都可以回答这些问题,还是指向我能阅读的资源?

2 个答案:

答案 0 :(得分:2)

  

如果在两个c文件中都需要它提供的声明,我在哪里放置.h文件的包含?

include语句放在需要标题定义的每个C文件中,在您的情况下,在 main.c vector.c < / em>的。使用include guards总是一个好主意,如果编译器抱怨已经定义了符号或多次定义了符号,则需要使用{{3}}。

  

我在哪里放置所有3个文件中都需要typedef?

取决于:

  • 如果typedefs对于您的矢量API是必需的或特定的,请将它们放在 vector.h 中。
  • 如果它们与您的矢量界面无关,即它们特定于 main.c ,则它们可能属于那里。
  • 但是你提到所有3个文件都需要它们,所以如果这些typedefs 不是你的矢量界面的一部分,那么它们可能属于第3个头文件,例如 common.h 之类的东西,它也可能包含在项目中的每个其他文件中。

答案 1 :(得分:2)

非常自然:

  • 您需要包含C文件所需的标题。
  • typedef是声明,所以它们非常适合放入头文件。

如果您的标题包含标题,有时您可能需要针对多重包含的保护,但对于您不需要的情况。请记住,每个C文件都可以自行编译。当然,切勿将#include与C文件一起使用。