4.2.3 #pragma指令

次に,拡張言語仕様としてサポートしている#pragma指令を示します。

表 4.15

サポートしている#pragma指令

#pragma指令

内容

#pragma section 属性指定文字 "セクション名"

データとプログラムのセクション割り当て

#pragma section 属性指定文字

#pragma section [文字列]

#pragma inline_asm [(]関数名[(size=数値)][, 関数名[(size=数値)], ...][)]

アセンブラ命令の記述

#pragma inline [(]関数名[, 関数名, ...][)]

インライン展開

#pragma noinline [(]関数名[, 関数名, ...][)]

#pragma interrupt [(]関数名[(割り込み仕様 [, 割り込み仕様]...)] [,...] [)]

割り込み/例外ハンドラ指定

#pragma block_interrupt [(]関数名[)]

割り込み禁止関数指定

#pragma rtos_task  [関数名]

タスク指定

#pragma pack [(][1|2|4][)]

構造体パッキング指定

#pragma bit_order [{left|right}]

ビット・フィールドの割り付け

#pragma pmodule pm指定

コア番号指定(マルチコア用)

#pragma align4 [(]関数名[(仕様)][)]

分岐先アドレスのアライメント指定

#pragma stack_protector [(]関数名[(num=<整数値>)][)]

スタック破壊検出機能

【Professional 版のみ】

#pragma no_stack_protector [(]関数名[)]

(1)

データとプログラムのセクション割り当て

C言語レベルでモジュールやデータを任意のセクションに割り当てることができます。

なお,記述方法についての詳細は「4.2.4.1 データとプログラムのセクション割り当て」を参照してください。

#pragma section 属性指定文字 "セクション名"
#pragma section 属性指定文字
#pragma section [文字列]

(2)

アセンブラ命令の記述

C言語中に,アセンブラ命令を記述することができます。

なお,記述方法についての詳細は「4.2.4.2 アセンブラ命令の記述」を参照してください。

#pragma inline_asm [(]関数名[(size=数値)][, 関数名[(size=数値)], ...][)]

(3)

インライン展開

(a)

インライン展開指定

インライン展開する関数を指定することができます。

なお,インライン展開についての詳細は「4.2.4.3 インライン展開」を参照してください。

#pragma inline [(]関数名[, 関数名, ...][)]

(b)

インライン展開対象外関数指定

インライン展開を抑止する関数を指定することができます。

なお,インライン展開対象外関数指定についての詳細は「4.2.4.3 インライン展開」を参照してください。

#pragma noinline [(]関数名[, 関数名, ...][)]

(4)

割り込み/例外ハンドラ指定

割り込み/例外処理ハンドラをC言語で記述します。

なお,記述方法については「(3) 割り込み/例外ハンドラの記述方法」を参照してください。

#pragma interrupt   [(]関数名[(割り込み仕様 [, 割り込み仕様]...)] [,...] [)]

(5)

割り込み禁止関数指定

関数全体を割り込み禁止にします。

なお,記述方法についての詳細は「(2) 関数全体の割り込みを禁止する方法」を参照してください。

#pragma block_interrupt [(]関数名[)]

(6)

構造体パッキング指定

構造体パッキングを指定します。数値はパッキング値,すなわちメンバのアライメント値を指定します。数値には1,2,4が指定できます。数値を指定しない場合,デフォルトのアライメントとなります。

なお,記述方法についての詳細は「4.2.4.8 構造体パッキング」を参照してください。

#pragma pack [(][1|2|4][)]

(7)

ビット・フィールドの割り付け

ビット・フィールドの並び順の切り替えを指定します。

なお,記述方法についての詳細は「4.2.4.9 ビット・フィールドの割り付け」を参照してください。

#pragma bit_order [{left|right}]

(8)

コア番号指定(マルチコア用)

コア番号指定を行う関数を指定することができます。

なお,コア番号指定についての詳細は「4.2.4.10 コア番号指定(マルチコア用)」を参照してください。

#pragma pmodule pm指定

(9)

分岐先アドレスのアライメント指定

分岐先アドレスのアライメントを指定することができます。

なお,分岐先アドレスのアライメント指定についての詳細は「4.2.4.11 分岐先アドレスのアライメント指定」を参照してください。

#pragma align4 [(]関数名[(仕様)][)]

(10)

スタック破壊検出機能 【Professional 版のみ】

(a)

スタック破壊検出コードの生成指定

スタック破壊検出コードを生成する関数を指定することができます。

なお,スタック破壊検出機能の詳細については「4.2.4.12 スタック破壊検出機能 【Professional 版のみ】」を参照してください。

#pragma stack_protector [(]関数名[(num=<整数値>)][)]

(b)

スタック破壊検出コードの対象外関数指定

スタック破壊検出コードを生成しない関数を指定することができます。

なお,スタック破壊検出機能の詳細については「4.2.4.12 スタック破壊検出機能 【Professional 版のみ】」を参照してください。

#pragma no_stack_protector [(]関数名[)]