翻译单元的数量与CPP文件的数量
Number of translation units vs number of cpp files
我们有2个情况(方案(。在每种情况下,我们都有2个文件:main.cpp
和file.cpp
情况1
- main.cpp:
#include <iostream>
#include "file.cpp" // this line is what matters
int main () {...}
我编译并通过:
运行g++ main.cpp -o main && ./main
情况2
- main.cpp:
#include <iostream>
void filefunc(int); // function declaration from file.cpp
int main () {...}
我编译并通过:
运行g++ -c main.cpp
g++ -c file.cpp
g++ main.o file.o -o main && ./main
在每种情况下我们有多少个translation units
?是:
- 第一个
- 第二个
每次将源代码文件传递给g++
时,这是一个翻译单元。根据定义。
文件扩展名实际上是无关紧要的,但通常我们保留" .cpp",以将我们传递给编译器的东西,而不是我们#include
的事物。
在第一种情况下,您不明智地包含.cpp
文件会导致A 单>单元翻译单元,这会使您的其他程序员感到困惑并在代码审查中导致拒绝。
在第二种情况下,您有两个翻译单元。
这次,最终结果&mdash;可执行
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 为什么我的主文件.cpp不打印头文件中的任何内容
- 生成文件错误 - 找不到文件 - *.cpp
- 如何在文件.cpp gtkmm中声明小部件
- 没有实现文件(.cpp)的派生类
- 如何使用"CMakeLists.txt"中的add_library将整个文件(.cpp,.h等)包含在目录中
- 如何在Linux / Windows操作系统上使用文件*.cpp一步编译下面的代码
- 关于 Linux .so 文件无法链接到主文件.cpp文件
- 文件.cpp从Windows到Linux
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- 如何将文件.cpp编译为本机编译
- 使用模板类时,似乎无法包含除 main 以外的任何 cpp 文件.cpp
- 无法编译C++文件.cpp。C++98模式
- 为什么C++头文件不需要包含实现文件 (.cpp)
- 如何访问位于独立文件(.cpp)中的非成员函数
- 如何在Visual Studio Code中通过键盘快捷键切换头文件/cpp文件
- 如何将数据从stringstream写入文件(CPP)
- 为什么filestream不把空白写入文件cpp ?