在命名空间中包装外部库

时间:2011-12-24 18:31:50

标签: c++ include

我正在编写一个用于我的项目的库。在其中,我希望将c标准库包装在我的库的命名空间和cstd命名空间中,以避免在全局命名空间中使用其函数。但是,根据我之前提出的问题以及我测试过的问题,我不能仅仅#include命名空间中的所有内容。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

我怀疑它,除非你想重写一切。

C语言本身没有命名空间的概念,因此C标准库使用的所有内容必须依赖于它正在寻找的任何内容都驻留在全局命名空间中。

如果你只是在#includes周围包装了一个命名空间,编译器将无法找到任何东西,因为它不知道要查找的命名空间。

答案 1 :(得分:1)

通常的做法是将第三方包含在实施文件中,以防止它们污染您的API。

<强> myapi.hpp

void coolthing( int howcool );

<强> myapi.cpp

#include <coollib.h>

void coolthing( int howcool )
{
    coollib_coolthing( howcool );
}