マクロの助けを借りてコンパイル時(実行時ではない)に構造体にアクセスしたいと思います。たとえば、独自の16進コードと応答の長さを持つ多数のコマンドがあります。ですから、私はプリプロセッサを使って1つの名前で別の値にアクセスする必要があります。コンパイル時に構造体を持つ
と言って、コマンドはREAD_SOMETHING_FROM_THAT_PLACEという名前で、0xABというコードと7個の応答バイトを返します。代わりに1つのインスタンスの両方にアクセスするために、より便利かつ堅牢になり
#define READ_SOMETHING_FROM_THAT_PLACE_CODE 0xAB
#define READ_SOMETHING_FROM_THAT_PLACE_LEN 7
:
本研究は、次のような二つの定義の使用を避けることを意図しています。それは可能です
CODE(READ_SOMETHING_FROM_THAT_PLACE)と、プリプロセッサは私に0xAB
を与えるLEN(READ_SOMETHING_FROM_THAT_PLACE)と、プリプロセッサは私に7
を与えるだろう:私は、それが(種類の)のようなマクロによってアクセスすることができると思います?どうやってするの?おかげさまで
構造体を作成して各マクロのフィールドを取得しますが、マクロを実際に必要としないことがあります。 –
あなたは何かをする方法がわからなくても、コードの説明の代わりにコードを掲示すれば、あなたの質問がもっとはっきりします。 – StoryTeller
[XY問題](https://meta.stackexchange.com/q/66377/142198)のように聞こえます。 –