gpt4 book ai didi

c++ - 我应该做些什么来帮助管理链接器命名空间污染 WRT 内部使用类吗?

转载 作者:行者123 更新时间:2023-11-28 03:56:27 31 4
gpt4 key购买 nike

在一个复杂的库或框架中,显然有时只在内部需要类来实现更高级别的功能。

通常这些内部结构与内部结构的工作方式紧密相关,因此将它们提供给用户没有意义 - 他们所能做的就是尝试篡改您的私有(private)内部结构。

同时,其中一些内容非常大 - 很容易大到需要它们自己单独的头文件和正文源文件。

如果您在单个文件中有一个小类,您可以将其包装在匿名命名空间中,并且行为良好的编译器不会在目标文件中包含与该类相关的符号。完全避免命名空间污染问题。

但是,一旦类被单独编译,这就不起作用了——我们需要将我们的其他内部实现代码链接到这个目标文件,所以它必须包含相关的符号。

由于头文件仅供内部使用,它可能应该与所有正文源文件位于同一文件夹中,而不是一些单独的 include 文件夹,其中包含用户将要使用的头文件#include

不过,这些符号在对象库中仍然可见。

这是一个真实的问题,还是一个虚构的问题?我应该做什么(如果有的话)来管理这种形式的命名空间污染?

最佳答案

我通常将此类标识符放入details 命名空间:

namespace some_component {
namespace details {
class helper { ... };
}
}

some_component::details::helper 显然是一个实现细节。

关于c++ - 我应该做些什么来帮助管理链接器命名空间污染 WRT 内部使用类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3428258/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com