ルモーリン

複雑なマクロにエディタからエラーが出る

投稿:2013-05-10

バイナリ埋め込み用のマクロをこんな感じで使います。
#include "ksrk.h"
KSRK_INJECTION(wave, "maguro.wav");
そうするとエディタの文法チェックが「Syntax error」を出します。 コンパイルはエラーなしで通りますからエディタだけの指摘です。 シンタックスエラー
Cの(プリプロセッサの)マクロはこうなっています。
// ファイルをオブジェクトに埋め込んで前後にラベルを追加
// ラベルの種:label
// ファイル:file
// 先頭:label_head
// 末尾:label_tail
#define KSRK_INJECTION(label, file) \
asm (\
	"	.global "#label"_head		\n"\
	"	.global "#label"_tail		\n"\
	"	.section .rodata, \"a\"		\n"\
	#label"_head:					\n"\
	"	.incbin \"../src/"file"\"	\n"\
	#label"_tail:					\n"\
)
多分こんな感じに展開していると思います。 展開後の状態ならエディタもエラーにしないでしょう。
#include "ksrk.h"
asm (\
	"	.global wave_head		\n"\
	"	.global wave_tail		\n"\
	"	.section .rodata, \"a\"		\n"\
	"wave_head:					\n"\
	"	.incbin \"../src/magro.wav\"	\n"\
	"wave_tail:					\n"\
);
試しに上記コードをエディタに貼ってみると、こちらは正常でした。 エラーなし
ありません。ほっ