最初に状況を説明させてください。それから質問に答えます。
非常に一般的なモジュール A があります。これは、1 つの c ファイルと 1 つの h ファイルで構成されています。唯一の依存関係は stdint.h ファイルです。
モジュールAを使ったモジュールBもあります(#include "module_A.h")。モジュール A を使用する別のモジュール C もあります。モジュール B と C の両方のモジュールは、モジュール B または C を使用する人がモジュール A もチェックアウトしていることを確認するために、svn:externals プロパティを介してモジュール A に「管理」されています。
モジュール B と C は、互いにあまり関係がありません。あるプロジェクトの開発中に、モジュール B と C の両方が必要になることがありました。Svn:externals プロパティがプロジェクトに設定され、これらのモジュールがプロジェクト ディレクトリに取り込まれます。そして今、プロジェクトのディレクトリ構造には次のようなものがあります。
src/module_B/module_B.c
src/module_B/module_B.h
src/module_B/module_A/module_A.c
src/module_B/module_A/module_A.h
src/module_C/module_C.c
src/module_C/module_C.h
src/module_C/module_A/module_A.c
src/module_C/module_A/module_A.h
コンパイラは、関数の重複した定義を検出し、コンパイルをエラーで停止します。
開発にはEclipseを使用しています。
質問 1. このような問題を解決するにはどうすればよいですか?
質問 2. このトピックをさらに掘り下げると、モジュール A にいくつかのリビジョンがあり、モジュール B と C がモジュール A の異なるリビジョンを指している状況を想像するかもしれません。このような問題を解決するにはどうすればよいですか?