は、私は、それぞれ外部C++とCライブラリのヘッダファイルされている C++の名前空間の競合
// prj_cpp.h
#include "lib_cpp.h"
extern "C" {
#include "lib_c.h"
}
lib_cpp.h
とlib_c.h
prj_cpp.h
で
C++
プロジェクトを開発しています。
外部C++ライブラリlib_cpp.h
も次のようにlib_c
を使用しています。 lib_c.h
は二重の混入を防ぐ
// lib_cpp.h
namespace SOME_WEIRD_NAMESPACE {
extern "C" {
#include "lib_c.h"
}
}
ので、lib_c.h
内のすべてのオブジェクトは、私のプロジェクトprj_cpp
とは何の関係もありませんSOME_WEIRD_NAMESPACE
に存在していることが判明しました。私が最初にlib_c.h
が含まれているためSOME_WEIRD_NAMESPACE
下には何もありませんので、一方
私のヘッダファイルが
// prj_cpp.h
extern "C" {
#include "lib_c.h"
}
#include "lib_cpp.h"
のように見える場合は、私が外部C++
プロジェクトを破ります。
私はどちらもlib_cpp.h
もlib_c.h
変更することは許されないのです、このような問題を解決するために、私は私のprj_cpp.h
に何かできることはありますか?
私のプロジェクトではSOME_WEIRD_NAMESPACE
を大変好きではありません。なぜなら、その名前空間はそれとは関係がないからです。さらに、lib_c.h
ヘッダーファイルの数は大きくなる可能性があります。
lib_cpp.hが壊れています。これが基本的な問題であり、それを修正するのが正しい方法です。 –
合意された、適切な修正は何でしょうか?名前空間でlib_c.hを使用できないようにしますか? – TruLa
lib_cpp.hとlib_c.hの新しいバージョン(壊れていないもの)を作成し、オリジナルの代わりに使用します。オリジナルは修正されていないので、割り当て仕様はまだ満たされています。 – user4581301