使用Clang ++,有一种方法可以将文件包含为名称空间等?

问题描述 投票:1回答:2

是否有一种方法可以命名(或以其他方式)包含一个文件,而无需更改要包含的文件?就像这样:

#include "A.cpp" as namespace A

据此,例如:

Start.cpp

// #include "A.cpp" as namespace A
#include "B.cpp"

int main() {
    // Could call A::Function() 
    // or similar??
}

A.cpp

int Function() {
    return 1;
}

B.cpp

int Function() {
    return 2;
}

编译:

clang++ --std=c++2a Start.cpp -o Start.o; ./Start.o
c++ clang++
2个回答
1
投票

您可以将包含内容包装到名称空间中。

namespace A {
#include "A.cpp"
}

但是您有风险,该文件中包含的所有内容也是该新名称空间的一部分,并且可能会导致诸如未解决的符号之类的不同问题。

注意:您不应该包含cpp文件。那不好。


2
投票

C ++中没有这样的功能。最好的办法是:

namespace A {
#include "A.cpp"
}

[#include只是粘贴文件,这样可能会给您带来一些错误。

良好的C ++库定义了它们自己的名称空间。

希望C++20中的模块可以简化此过程!

© www.soinside.com 2019 - 2024. All rights reserved.