C程序如何具有多个转换单元?

时间:2016-01-31 23:25:24

标签: c

来自C11标准:

  

源文件以及包含的所有标头和源文件   通过预处理指令#include被称为预处理   翻译单位。预处理后,进行预处理翻译   单位称为翻译单位

  

程序的单独翻译单元通过(for   示例)调用标识符具有外部链接的函数,   操纵标识符具有外部链接的对象,或   操纵数据文件。翻译单元可以单独使用   翻译后再链接以生成可执行程序。

似乎C程序以所谓的" main.c"开头。并包括其他库和文件,所以它仍然是一个翻译单元,甚至包括多个文件。在什么情况下,C程序有多个翻译单元?

你能举个例子吗?

我是C的新手并感谢您的建议!

1 个答案:

答案 0 :(得分:0)

  

似乎C程序以所谓的“main.c”开头并包含其他库和文件,因此即使包含多个文件,它仍然是一个翻译单元。在什么情况下,C程序有多个翻译单元?

当然,它就是这样开始的。

但随着项目的增长,您可能会添加不能/不应该#include d的文件,例如some-implementations.c。如果您在main.c中转储了所有定义,那么您将度过难关。

此外,您链接的每个非标题库都会添加一个或多个其他翻译单元。

我不打算给出一个具体的例子,但是您可以在GitHub,Sourceforge,Google Code等上查看几乎任何 C项目,以便亲自查看。