将外部库包装在名称空间中
Wrapping external libraries in namespaces
我正在写一个库在我的项目中使用。在其中,我希望将c标准库包装在我的库的命名空间和cstd命名空间中,以避免其函数在全局命名空间中。但是,从我之前提出的问题和我所测试的情况来看,我不能仅仅#包括名称空间中的所有内容。有什么办法可以做到吗?
我对此表示怀疑,除非你想重写所有内容。
C语言本身没有名称空间的概念,因此C标准库使用的所有内容都必须依赖于它要查找的内容驻留在全局名称空间中的事实。
如果您只是在#include周围包装一个名称空间,编译器将无法找到任何内容,因为它不知道要查找哪个名称空间。
通常的方法是在实现文件中放入第三方包含,以防止它们污染您的api。
myapi.hpp
void coolthing( int howcool );
myapi.cpp
#include <coollib.h>
void coolthing( int howcool )
{
coollib_coolthing( howcool );
}
相关文章:
- 命名空间范围内的外部 - GCC vs clang vs msvc
- 在类设计中查找外部命名空间中的重载运算符
- C++ 中外部库的命名空间
- 在命名空间内部还是外部实现 c++ 函数?
- C++使用其他命名空间中的符号,而不使它们可从外部访问
- CERN 根:为命名空间中的外部"C"结构生成流处理器
- C++ 没有在命名空间外部声明的类主体的类
- 如何在命名空间中初始化外部变量
- 如何在命名空间中声明外部全局,然后定义它?
- 从外部更改名称空间变量值(C )
- C++:.cpp中"Redeclare"外部命名空间变量
- C :将外部链接与未命名的名称空间使用常数变量
- 有什么区别:在命名空间 yyy 外部和内部使用 namespae xxx?
- 外部常量,未命名的命名空间
- 命名空间外部变量的未定义参考/多重定义,C 结构问题
- 在名称空间之外的C 中的外部变量分配值
- 错误:LINK2019:在命名空间中使用运算符<<时未解析的外部符号
- 在命名空间前缀解析和优化级别依赖关系中使用外部"C" C++
- 如何在另一个命名空间中使用常量定义的外部
- 通过使用其他名称空间元素传播的名称空间外部可见性