さまざまな言語 (Verilog、C、C++、および C#) のいくつかのプロジェクトでアクセスする必要がある定数の長いリストがあります。それらを各言語で繰り返すのではなく、これらを共有する良い方法はありますか?
私が考えることができる唯一のものは、テキスト ファイルと前処理スクリプトですか? これが最善の解決策ですか、それとももっと簡単でエレガントなものがありますか?
コード内のこれらの定数を自動的に更新する前処理スクリプトは、おそらく最良の方法です。プロジェクトでコードをコミットして、正確性を確保し、ビルド スクリプトの一部にします。
それらを XML ドキュメントに保持し、言語ごとに XSLT スクリプトを記述して、ビルドごとに適切なソース ファイルを生成できます。
これらの定数を定義するためにメイクファイル (または同等のもの) を使用できますか? C および C++ の場合。コンパイラの CLI オプションを使用して、定数のプリプロセッサ値を定義できます。Verilog のビルドのカスタマイズはあまり行っていませんが、同様のものが存在するのではないかと思います。
次の形式で単純なファイルを作成できます。
const1 = value1
const2 = value2
const3 = value3
そして、cの場合、次のようなものを適用します:
s/\([a-zA-Z][a-zA-Z1-9_]*\)[ \t]*=[ \t]*\(.*\)/#define \1 \2/
すべての言語で型を気にしないプリプロセッサ マクロを使用できるわけではないため、型を指定する必要がある場合があることに注意してください。
または、Flex/Bison でレクサー/パーサーを作成して、構成ファイルを解析することもできます。これにより、より明確になり、拡張が容易になります。
XML
共有する定数を含むファイルがあり、それを各言語で解析する場合があります。