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] =

对于所有这些宏,前两个参数是符号前缀和区域设置名称。 生成的区域设置块的地址由表达式 &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 0349AC
Non-Confidential