2.8.17. __LC_MONETARY_DEF

此宏用于创建在设置货币值格式时使用的块。 Example 2.21 显示了 rt_locale.h 中的定义和示例代码。

对于所有这些宏,前两个参数是符号前缀和区域设置名称。 生成的区域设置块的地址由表达式 &symprefix_start 确定,索引项由表达式 &symprefix_index 确定。

Example 2.21. LC_MONETARY_DEF


#define __LC_MONETARY_DEF(sym,ln,ic,cs,md,mt,mg,ps,ns, \	

                          id,fd,pc,pS,nc,nS,pp,np) \	

static const int sym##_index = ~3 & (3 + (sizeof(ic)+sizeof(cs)+sizeof(md)+ \	

                                          sizeof(mt)+sizeof(mg)+sizeof(ps)+ \	

                                          sizeof(ns)+44) \	

                                     + (~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 = id; \

static const char sym##_fdchr = fd; \

static const char sym##_pcchr = pc; \

static const char sym##_pSchr = pS; \

static const char sym##_ncchr = nc; \

static const char sym##_nSchr = nS; \

static const char sym##_ppchr = pp; \

static const char sym##_npchr = np; \

static const int sym##_icoff = 36; \

static const int sym##_csoff = (sizeof(ic)+36); \

static const int sym##_mdoff = (sizeof(ic)+sizeof(cs)+36); \

static const int sym##_mtoff = (sizeof(ic)+sizeof(cs)+sizeof(md)+36); \

static const int sym##_mgoff = (sizeof(ic)+sizeof(cs)+sizeof(md)+ \

                                sizeof(mt)+36); \

static const int sym##_psoff = (sizeof(ic)+sizeof(cs)+sizeof(md)+ \

                                sizeof(mt)+sizeof(mg)+36); \

static const int sym##_nsoff = (sizeof(ic)+sizeof(cs)+sizeof(md)+ \

                                sizeof(mt)+sizeof(mg)+sizeof(ps)+36); \

static const char sym##_ictxt[] = ic; \

static const char sym##_cstxt[] = cs; \

static const char sym##_mdtxt[] = md; \

static const char sym##_mttxt[] = mt; \

static const char sym##_mgtxt[] = mg; \

static const char sym##_pstxt[] = ps; \

static const char sym##_nstxt[] = ns;

用法

请参阅_get_lc_monetary()。 有关编译器优化副作用的详细信息,另请参阅__LC_CTYPE_DEF

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0349AC
Non-Confidential