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.