マクロを最初に定義したファイルで展開することはできますか? これが意味することは、次のようなことをした場合です。
#define DEFINE_SAMPLE_CLASS(name) \
typedef struct{ \
int example_int; \
} name; \
このマクロを定義した元のファイルで展開したいのですが、可能ですか? 私がこれをしたい理由は、ユーザーがたくさんのテンプレートのようなクラスを定義できるようにしたいからです。他のヘッダー ファイルを使用して、必要なタイプを取得します。これが不可能または実用的でない場合、これに対するより良いアプローチはありますか?
編集:明確化
私が基本的にやりたいことは、ユーザーがヘッダー ファイルに「追加」できるようにして、上記のサンプルのようなものを宣言できるようにすることです。
DEFINE_SAMPLE_CLASS(Sample1)
これは次のように展開されます:
typedef struct{
int example_int;
} Sample1;
その後、他のファイルは、それらを定義したすべてのファイルを含める必要なく、これらの「グローバル」定義を使用できます。ユーザーがこれらのクラスの独自のバージョンを定義できるようにしたいのですが、それらを「グローバル」に保ち、元のヘッダーを編集する必要はありません。