1
#define DECLARE_TYPE(T) \
typedef struct \
{ \
float value; \
int scale; \
} ae_T##_t;
DECLARE_TYPE(Q25);
これはタイプae_Q25_t
を作成しますが、機能しません。##を使用したトークン連結は機能しませんか?
書き換え方法は?
マクロ忍者が登場しました! – P0W
「Cトークン連結」を検索したときに見たすべての例は、右側だけに「##」を使用しています。また、コンパイルする例も片面 '##'です:#define DECLARE_CTYPE(s)\ 名前空間s ## _ space {\ class s ## _; \ } \ typedef s ## _ space :: s ## _ s; '非常に奇妙な、多くのありがとう。 – Danijel
@Danijelこれらの例でも、パラメータの前後に空白がありますが、そうではありませんか?この場合、プリプロセッサは 'ae_T'を単一のトークンとして扱うので、両側で連結を使用する必要があります。 – StoryTeller