saddr領域に割り当てる変数であることをコンパイラに示唆します。
[機能]
- | 初期値あり変数はセクション.sdataへ配置します。 |
- | 初期値なし変数はセクション.sbssへ配置します。 |
- | アドレス参照は,必ずnearポインタを返します。 |
- | #pragma saddrを指定した外部変数,および関数内static変数は,saddr領域に割り当てます。 |
- | __farキーワードを付加した変数であっても,警告なしで,__near指定したものとして扱います。 |
[効果]
- | saddr領域に対する命令は通常メモリに対する命令よりも短く,オブジェクト・コードが小さくなり,実行速度が向上します。 |
[方法]
- | 変数の最初の宣言より前で#pragma saddrを宣言します。 |
#pragma saddr [(]変数名[,...][)]
|
[制限]
- | 同一変数に対し複数の宣言があり,2度目以降の宣言に作用する位置に#pragma saddrを記述した場合,動作を保証しません。 |
- | 他の#pragmaを指定すると,コンパイル・エラーとなります。 |
[使用例]
#pragma saddr saddr_var
extern int saddr_var;
void func(void)
{
saddr_var = 0;
}
|
[備考]
- | キーワード__saddrと#pragma saddrの違いについて |
- | __saddrキーワードは,__near/__farキーワードとの混在を許さずコンパイル・エラーとなります。 |
- | #pragma saddrは,__near/__farキーワードを付加した変数でも警告なしで__saddrを指定したものとして扱います。 |