繁体   English   中英

命名空间的定义可以跨多个翻译单元吗?

[英]Can the definition of a namespace span multiple translation units?

我已经看到了命名空间的定义被拆分为多个头文件,并且头文件包含在一个文件中。 例如, 如何在多个文件中使用名称空间

命名空间的定义可以跨多个翻译单元吗?

我正在将C ++中的名称空间与Java中的程序包进行比较。 Java包可以跨越多个翻译单元。

命名空间没有声明和定义。 声明和定义在名称空间中。

翻译单元是您经过预处理后得到的所有内容。 特别地,预处理器包括源文件的头文件。

假设您有一个标头和两个带有名称空间的源文件。 预处理后,您将从头跨越两个源文件获取名称空间。 它将被编译。

因此,您可以在源文件之间拆分名称空间。

头文件

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。 它们具有不同的基本概念。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM