名称空间的定义可以跨越多个翻译单元吗?
Can the definition of a namespace span multiple translation units?
我看到命名空间的定义被拆分成多个头文件,并且头文件包含在一个文件中。例如,How to use namespace across several files
命名空间的定义可以跨越多个翻译单元吗?
我正在将 C++ 中的命名空间与 Java 中的包进行比较。 Java 中的包可以跨越多个翻译单元。
命名空间没有声明和定义。声明和定义在命名空间中。
翻译单元是经过预处理后得到的所有内容。特别是,预处理器将 header 个文件包含到源文件中。
假设您有一个 header 和两个带有命名空间的源文件。预处理后,您从 header 获得的命名空间跨越两个源文件。并且会被编译。
因此您可以在源文件之间拆分命名空间。
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。他们有不同的基本概念。
我看到命名空间的定义被拆分成多个头文件,并且头文件包含在一个文件中。例如,How to use namespace across several files
命名空间的定义可以跨越多个翻译单元吗?
我正在将 C++ 中的命名空间与 Java 中的包进行比较。 Java 中的包可以跨越多个翻译单元。
命名空间没有声明和定义。声明和定义在命名空间中。
翻译单元是经过预处理后得到的所有内容。特别是,预处理器将 header 个文件包含到源文件中。
假设您有一个 header 和两个带有命名空间的源文件。预处理后,您从 header 获得的命名空间跨越两个源文件。并且会被编译。
因此您可以在源文件之间拆分命名空间。
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。他们有不同的基本概念。