2016-11-04 5 views
0

javaなどの言語では、パッケージ名はcom.foobar.mystuffのようなドメイン名です。動的ライブラリまたは静的ライブラリの名前空間が既に使用されているかどうかを知る方法はありますか?

com.foobarを所有している場合、誰かがcom.foobarというパッケージ名を使用している可能性は非常に低く、衝突がないことは合理的に確信できます。

しかし、C++では、任意の名前空間名を選択できます。リンクしているライブラリが特定の名前空間名を使用していないかどうかをどのように知っていますか?ソースコードやドキュメントにアクセスできない場合は、特にテストする方法はありますか?この問題を避けるためのガイドラインはありますか?

+0

ええと、C++はどんな種類のリフレクションもサポートしていません。 –

+0

オプション1:ヘッダーファイルを見て、オプション2:コンパイラABIについて学び、 'strings'や他のツールを使ってすべてのシンボルを表示し、そのシンボルを逆マングルする。 – Danh

+0

@πάνταῥεῖだから、クラッシュ? (エイリアスを使用するので、後で名前空間を変更するのは簡単です) –

答えて

0

この問題を回避するガイドラインはありますか?

、それはあなたが使用しているサードパーティのライブラリのいずれかがアプリケーションとしてnamespaceを使用して、もしあれば、それは、あまりにも多くの問題を引き起こしてはならないことを見つけるために、あなたを驚かせるかもしれないが。

最悪の場合のシナリオでは、アプリケーションに固有のnamespaceを作成し、namespaceをネストして、namespaceの下に作成する必要があります。

関連する問題