大規模なレガシー コード ベースの作業を始めたところです。プレーンテキストの「定義ファイル」で名前が付けられた多くの変数と構造があります。次に、いくつかのヘッダー ファイルがこれらの定義ファイルをインクルードし、Cプリプロセッサを使用して変数宣言と getter/setter を生成します。
これは、フィールドの作業と変更に大きな苦痛をもたらします。また、getter/setter の署名はコンパイル時まで生成されないため、それらに対する Intellisense サポートもありません。
コンパイル時間の前にコードを生成し、プリプロセッサ ベースのヘッダーを含めるのではなく、生成されたヘッダー ファイルを含めるように他のモジュールに依頼することを考えています。Python + clang を調べて、キーワードをC言語に追加しました。しかし、どちらも圧倒されてしまい、どうやって始めればいいのかわかりません。そこで、人々が問題に対処するために推奨する方法についてお聞きしたいと思います。
編集:コードベースは私に属していないため、コピーして貼り付けることはできません. しかし、私はコードを模倣することができ、それは次のようになります:
// in the definition file
NEWVARIABLE( point, int )
// in the preprocessor header file
#define NEWVARIABLE( name, type ) \
static type name;\
type LIBNAME_Get##name##(){return name ; }\
void LIBNAME_Set##name##( type _##name ){ name = _##name ; }
場合によっては、これらのプリプロセッサによって生成された関数またはデータが関数ポインタとインターリーブし、さらにおかしくなります。