「詳細解析モード」に必要なCオプションパラメータの使い方を教えてください。
よくある質問(FAQ)
「詳細解析モード」に必要なCオプションパラメータの使い方を教えてください。
CasePlayer2の「言語設定」で選択した言語仕様(ANSI-C or C99 or GNU-C)に対して 言語拡張された記述(キーワード)を使用している場合、以下のエラーが表示されます。
■解析エラー
CasePlayer2-E-SYN : 宣言が正しくありません.
まずは、使用コンパイラの言語仕様とCasePlayer2の「言語設定」が合っていることをご確認ください。「言語設定」を変更してもエラーが解消されない場合は「Cオプションパラメータ」を使用しエラーを回避します。
★注意事項
解析エラーがシステムヘッダー(stdio.h 等)内で発生している場合は、「暗黙のキーワード」が影響している可能性があります。「暗黙のキーワード」については、キーワードを「プレインクルードファイル」へ設定することで回避します。 詳細はこちら
「Cオプションパラメータ」を設定することでエラー回避可能な記述「キーワード」は、下記(5 種類)です。
・割り付け先を示すキーワード
・型に対する属性を示すキーワード
・非標準の型を示すキーワード
・アセンブラの記述を示すキーワード
・その他のキーワード
① 割り付け先を示すキーワード
割り付け先(メモリ空間等)を指定するキーワードで、変数(又は関数)宣言の前に記述します。
■使用例
初期化しないメモリへの配置宣言 (事例:IAR)
__no_init char buffer[10240];
■Cオプションパラメータへの設定キーワード
キーワード:_no_init
種類 :STRAGE
後置記述 :なし
② 型に対する属性を示すキーワード
型の属性を指定するキーワードで、「型」宣言の前に記述します。
■使用例
構造体メンバを1バイト(ベタ付け)アライメントで割り付けるための宣言 (事例:IAR,ARMCC)
__packed struct tag {
char ch;
int val;
};
struct tag pkdt;
■Cオプションパラメータへの設定キーワード
キーワード:__packed
種類 :TYPEATT
後置記述 :なし
③ 非標準の型を示すキーワード
非標準の型を 記述するキーワードです。
非標準の型とは、標準C言語には存在しないコンパイラ固有の型名を指します。
■使用例
NEONベクトル型(unsigned short×8)の変数を宣言 (事例:ARMCLANG,GCC)
uint16x8_t vector;
■Cオプションパラメータへの設定キーワード
キーワード:uint16x8_t
種類 :TYPE
後置記述 :なし
④ アセンブラの記述を示すキーワード (例1)
Cソース内に一部アセンブラ命令を挿入するための記述です。
記述形式は「キーワード (後置記述)」の形式になります。
■使用例
記述形式:__ASM("アセンブラ命令")
__ASM ("msr cpsr, 1");
■Cオプションパラメータへの設定キーワード
キーワード:__ASM
種類 :ASM
後置記述 :(EXPRESSION)
⑤ アセンブラの記述を示すキーワード (例2)
関数全体がアセンブラ命令で記述されている関数です。
記述形式は「キーワード 後置記述{後置記述}」の形式になります。
■使用例
記述形式:"asm void XXXXXXXX(){アセンブラ命令}"
asm void function()
{
/* アセブラ命令 */
:
NOP
}
■Cオプションパラメータへの設定キーワード
キーワード:asm
種類 :ASM
後置記述 :EXPRESSION{EXPRESSION}
⑥ その他のキーワード (例1)
その他(①~⑤以外)の用途で使用されるキーワードです。
CasePlayer2では、本キーワードの記述が無いものとして解析されます。
■使用例
先頭タスク(RTOS)となる関数の宣言 (事例:IAR)
__task void func(void)
{
/* task制御 */
}
■Cオプションパラメータへの設定キーワード
キーワード:__task
種類 :IGNORE
後置記述 :なし
⑦ その他のキーワード (例2)
その他(①~⑤以外)の用途で使用される「後置記述」の有るキーワードです。
CasePlayer2では、本キーワード(後置記述を含む)の記述が無いものとして解析されます。
■使用例
関数属性の宣言「__attribute__(後置記述)」 (事例:GCC)
void func() __attribute__((noreturn));
■Cオプションパラメータへの設定キーワード
キーワード:__attribute__
種類 :IGNORE
後置記述 :(EXPRESSION)