来自C11标准:
源文件以及包含的所有标头和源文件 通过预处理指令#include被称为预处理 翻译单位。预处理后,进行预处理翻译 单位称为翻译单位
和
程序的单独翻译单元通过(for 示例)调用标识符具有外部链接的函数, 操纵标识符具有外部链接的对象,或 操纵数据文件。翻译单元可以单独使用 翻译后再链接以生成可执行程序。
似乎C程序以所谓的" main.c"开头。并包括其他库和文件,所以它仍然是一个翻译单元,甚至包括多个文件。在什么情况下,C程序有多个翻译单元?
你能举个例子吗?我是C的新手并感谢您的建议!
答案 0 :(得分:0)
似乎C程序以所谓的“main.c”开头并包含其他库和文件,因此即使包含多个文件,它仍然是一个翻译单元。在什么情况下,C程序有多个翻译单元?
当然,它就是这样开始的。
但随着项目的增长,您可能会添加不能/不应该#include
d的文件,例如some-implementations.c
。如果您在main.c
中转储了所有定义,那么您将度过难关。
此外,您链接的每个非标题库都会添加一个或多个其他翻译单元。
我不打算给出一个具体的例子,但是您可以在GitHub,Sourceforge,Google Code等上查看几乎任何 C项目,以便亲自查看。