我已经看到命名空间的定义分为多个头文件,头文件包含在一个文件中。例如,How to use namespace across several files
命名空间的定义是否可以跨多个翻译单元?
我将C ++中的命名空间与Java中的包进行比较。 Java中的包可以跨越多个翻译单元。
答案 0 :(得分:0)
命名空间没有声明和定义。声明和定义位于名称空间中。
翻译单元是您在预处理后获得的所有内容。特别是,预处理器包括源文件的头文件。
想象一下,您有一个标头和两个带有命名空间的源文件。在预处理之后,您从头部获取命名空间跨越两个源文件。它将被编译。
因此,您可以在源文件之间拆分命名空间。
<强> header.h 强>
namespace ns {
void f1();
void f2();
}
<强> source1.cpp 强>
#include "header.h"
namespace ns {
void f1() {
}
}
<强> source2.cpp 强>
#include "header.h"
namespace ns {
void f2() {
}
}
停止比较C ++和Java。他们有不同的基本概念。