よくある質問(FAQ)

インラインアセンブラ記述「__asm volatile(…)」で解析エラーが発生しました。

解析エラーの回避策について

質問

マクロ定義したインラインアセンブラ文をコールしている個所で、解析エラーが発生しました。ソースコードを変更せずに、エラーを回避する方法はありませんか?
「言語設定」は「C99」です。

■記述例
#define func_asm(a,b) \
 __asm volatile ("mov %1, %0\n\t" "add $1, %0" : "=r" (a) : "r" (b))

void func()
{
 func_asm(1,2);
}

■Cオプションパラメータの設定
キーワード:__asm
種類   :ASM
後置記述 :(EXPRESSION)

■解析エラー
CasePlayer2-XCCPPV_V:
 "C:\XXXXXXXX\YYYYYYYY\ソースファイル名.c", line 行番号: error: Illegal format in User Keyword.
   func_asm(1,2);
   ^

回答

__asm_volatile」の記述形式は、設定してる「Cオプションパラメータ」の「後置記述」と一致しないため、解析エラーが発生しています。

■回避策
「Cオプションパラメータ」を変更することで、エラーを回避できます。

■ 変更後のCオプションパラメータ
キーワード:__asm
種類   :ASM
後置記述 :EXPRESSION(EXPRESSION)