I am developing a C++ project in prj_cpp.h which starts as
// prj_cpp.h #include "lib_cpp.h" extern "C" { #include "lib_c.h" } Where lib_cpp.h and lib_c.h are header files of external C++ and C libraries respectively.
External C++ library lib_cpp.h also uses lib_c in the following way.
// lib_cpp.h namespace SOME_WEIRD_NAMESPACE { extern "C" { #include "lib_c.h" } } Because lib_c.h prevents double inclusion, it turns out that all objects in lib_c.h reside in SOME_WEIRD_NAMESPACE which has nothing to do with my project prj_cpp.
On the other hand if my header file looks like
// prj_cpp.h extern "C" { #include "lib_c.h" } #include "lib_cpp.h" I break the external C++ project because there is nothing under SOME_WEIRD_NAMESPACE because I include lib_c.h first.
I am not allowed to modify neither lib_cpp.h nor lib_c.h
Is there anything I can do in my prj_cpp.h to resolve such an issue?
I do not like very much using SOME_WEIRD_NAMESPACE in my project because that namespace has nothing to do with it. Moreover, the number of lib_c.h headers files can be large.