2.8.13. __LC_CTYPE_DEF

このマクロを使用すると、CTYPE ブロックを作成できます。 Example 2.16 は、rt_locale.h に含まれている定義とサンプルコードを示しています。 このサンプルは完全なものではないため、詳細については rt_locale.h インクルードファイルを参照して下さい。

Example 2.16. LC_CTYPE_DEF

#define __LC_CTYPE_DEF(sym,ln) \	
static const int sym##_index = ~3 & (3 + (268+(~3 & (3 + sizeof(ln))))); \	
static const char sym##_lname[~3 & (3 + sizeof(ln))] = ln; \	
static const int sym##_pname = -4-(~3 & (3 + sizeof(ln))); \	
static const char sym##_start = 0; \	
static const char sym##_table[256] =

すべてのマクロで、最初の 2 つの引数はシンボルの接頭文字とロケール名です。 求められるロケールブロックは、式 &symprefix_start でアドレス指定され、そのインデクスエントリは式 &symprefix_index でアドレス指定されます。

使用法

_get_lc_ctype()を参照して下さい。

Note

コンパイラによってデータセグメントが最適化されるため、ロケール定義の一部が再配置または削除され、データ構造が分断されることがあります。 上記のサンプルコードは、単なる参考にすぎません。 実際には、この定義では最適化を無効にするためのプラグマを追加する必要があります。 これらのプラグマは、rt_locale.h 内で以下のように指定されています。

#define __lblk_start _Pragma("push_once Ono_remove_unused_constdata \ Ono_data_reorder")
#define __lblk_end _Pragma("pop")
Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0349AJ
Non-Confidential