2011-12-24 3 views
2

Я пишу библиотеку для использования в моих проектах. В этом я надеялся обернуть стандартную библиотеку c в пространстве имен библиотеки и в пространстве имен cstd, чтобы избежать ее функций в глобальном пространстве имен. Однако из предыдущего вопроса, который я задал, и из того, что я тестировал, я не могу просто # включить все в пространство имен. Есть какой-либо способ сделать это?Обтекание внешних библиотек в пространствах имен

ответ

3

Я сомневаюсь, если вы не захотите переписать все.

Сам язык C не имеет понятия пространств имен, поэтому все, что использует стандартная библиотека C, должно опираться на то, что все, что он ищет, находится в глобальном пространстве имен.

Если вы просто обернуты пространство имен вокруг ваших директив #includes, компилятор не сможет найти что-нибудь, потому что он не будет знать, что пространство имен, чтобы посмотреть в.

1

Обычный подход был бы поставить 3-й участник включает в файлы реализации, чтобы они не загрязняли ваш api.

myapi.hpp

void coolthing(int howcool); 

myapi.cpp

#include <coollib.h> 

void coolthing(int howcool) 
{ 
    coollib_coolthing(howcool); 
} 
Смежные вопросы