C++ 在名称空间中包装外部库

C++ 在名称空间中包装外部库,c++,include,C++,Include,我正在写一个用于我的项目的库。在本文中,我希望将c标准库包装在库的名称空间和cstd名称空间中,以避免其函数位于全局名称空间中。然而,从我之前提出的一个问题和我所测试的内容来看,我不能将所有内容都包含在名称空间中。有什么方法可以做到这一点吗?我对此表示怀疑,除非你想重写所有内容 C语言本身没有名称空间的概念,因此C标准库使用的所有东西都必须依赖于这样一个事实,即它所寻找的任何东西都驻留在全局名称空间中 如果您只是在#includes周围包装一个名称空间,编译器将无法找到任何内容,因为它不知道要查

我正在写一个用于我的项目的库。在本文中,我希望将c标准库包装在库的名称空间和cstd名称空间中,以避免其函数位于全局名称空间中。然而,从我之前提出的一个问题和我所测试的内容来看,我不能将所有内容都包含在名称空间中。有什么方法可以做到这一点吗?

我对此表示怀疑,除非你想重写所有内容

C语言本身没有名称空间的概念,因此C标准库使用的所有东西都必须依赖于这样一个事实,即它所寻找的任何东西都驻留在全局名称空间中


如果您只是在#includes周围包装一个名称空间,编译器将无法找到任何内容,因为它不知道要查找哪个名称空间。

通常的方法是将第三方includes放在实现文件中,以防止它们污染您的api

myapi.hpp

void coolthing( int howcool );
#include <coollib.h>

void coolthing( int howcool )
{
    coollib_coolthing( howcool );
}
myapi.cpp

void coolthing( int howcool );
#include <coollib.h>

void coolthing( int howcool )
{
    coollib_coolthing( howcool );
}
#包括
虚空冷却物(int howcool)
{
coollib_coolthing(howcool);
}