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.
精彩评论