开发者

What's the difference between the terms "source file" and "translation unit"?

What's the difference b开发者_如何学运维etween source file and translation unit?


From the C++ Standard:

A source file together with all the headers and source files included via the preprocessing directive #include less any source line skipped by any of the conditional inclusion preprocessing directives is called a translation unit.


A "translation unit" is a source file plus any headers or other source files it #includes, plus any files that THEY include, and so on. A source file is just that...one source file.

If it helps any, think of the source file as the "before" the preprocessor runs, and the translation unit as "after". Or, think of it as the preprocessor's job to turn a source file into a translation unit.


A translation unit is the basic unit of compilation in C++. It contains:

  • all the contents of a single source file after the preprocessor has run its course
  • the contents of any header files directly or indirectly included by it
  • minus any lines ignored using conditional preprocessing statements

A single translation unit gets compiled into an object file, library, or executable program.

A source file, by contrast, is a stand-alone file, just like any other file on your file system. Once compiled, it can be a component of a translation unit as mentioned above.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜