4

I'm writing a library to use in my projects. In it, I was hoping to wrap the c standard library in my library's namespace and a cstd namespace to avoid having its functions in the global namespace. However, from a previous question I asked and from what I've tested, I can't just #include everything in a namespace. Is there any way to do this?

ConsciousCode
  • 563
  • 4
  • 18

2 Answers2

3

I doubt it, unless you wanted to rewrite everything.

The C language itself has no concept of namespaces, so everything the C standard library uses must rely on the fact that whatever it is looking for resides in the global namespace.

If you simply wrapped a namespace around your #includes, the compiler wouldn't be able to find anything because it wouldn't know what namespace to look in.

Marlon
  • 19,924
  • 12
  • 70
  • 101
1

The usual approach would be to put the 3rd party includes in the implementation files to keep them from polluting your api.

myapi.hpp

void coolthing( int howcool );

myapi.cpp

#include <coollib.h>

void coolthing( int howcool )
{
    coollib_coolthing( howcool );
}
bob2
  • 1,092
  • 9
  • 18