ãtypedefã§å®çŸ©ãããåã¯ã#if ã§æŒç®ã«çšããããšã¯ã§ããªãã
äžèšã®åœé¡ã¯ãã£ãŠããã§ããããã
ããšãã°ããããªã³ãŒãã§ãã
//---ã·ã¹ãã ãçšæããããããã¡ã€ã«
typedef unsigned short wchar_t;
//---ããã #include ããã³ãŒã
#if sizeof(wchar_t)==2
#define UCS2 wchar_t;
typedef uint_least32_t UCS4;
//åŸç¥
ããã¯ããªããã»ããµã®æ®µéã§ãšã©ãŒã«ãªãã®ãæ£ãããã§ãããã
ïŒãããã char ã 8 ããããšããããšããèŠæ Œã¯ä¿èšŒããŠããªãã®ã§ã
ïŒsizeof(short)==2 ãªããŠç¡æå³ãªãã§ããã
ã§ãwchar_t ã«é¢ããŠã¯çŽ çŽã« WCHAR_MAX ãèŠãŠå€å®ããã®ãåããšã
========================================================================
é£¯å¶ æµ©å
/ ã§ããããã»ããã㟠http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp
In article <3ED5524B...@ht.sakura.ne.jp>,
IIJIMA Hiromitsu <delm...@ht.sakura.ne.jp> writes:
>ãtypedefã§å®çŸ©ãããåã¯ã#if ã§æŒç®ã«çšããããšã¯ã§ããªãã
>äžèšã®åœé¡ã¯ãã£ãŠããã§ããããã
typedef 㯠typedefåãå®çŸ©ãããã®ã§ãã£ãŠãåãå®çŸ©ããã®ã§ã¯
ãããŸããããããtypedef ã§å®çŸ©ãããåããªããã®ã¯ååšããŸããã
ãtypedefã§å®çŸ©ãããåãããtypedef ã§ typedefåãšããŠå®çŸ©ãã
ãèå¥åãã®ããšãšè§£éãããšãããã¯ããã®æ®µéã§ã¯åãªãèå¥åãš
ããŠæ±ãããŸãã®ã§ã#if ã®åŒã«çšããããšãã§ããŸãã
ïŒãããããã®å€ã¯ 0 ãšãªãã§ããã
>ããšãã°ããããªã³ãŒãã§ãã
> //---ã·ã¹ãã ãçšæããããããã¡ã€ã«
> typedef unsigned short wchar_t;
> //---ããã #include ããã³ãŒã
> #if sizeof(wchar_t)==2
ãã® #if ã®åŒã¯ã
0 ( 0 ) == 2
ãšè§£éãããæ§æãšã©ãŒã«ãªããŸãã
>ããã¯ããªããã»ããµã®æ®µéã§ãšã©ãŒã«ãªãã®ãæ£ãããã§ãããã
çç±ã¯ãšããããçµè«ã ãã¯åã£ãŠããŸãã:-)
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
> typedef 㯠typedefåãå®çŸ©ãããã®ã§ãã£ãŠãåãå®çŸ©ããã®ã§ã¯
> ãããŸããããã
ãªãã»ã©ããtypedef åããšããããã¡ããšããèšèããããã§ããã
> >ããšãã°ããããªã³ãŒãã§ãã
> > //---ã·ã¹ãã ãçšæããããããã¡ã€ã«
> > typedef unsigned short wchar_t;
>
> > //---ããã #include ããã³ãŒã
> > #if sizeof(wchar_t)==2
>
> ãã® #if ã®åŒã¯ã
>
> 0 ( 0 ) == 2
>
> ãšè§£éãããæ§æãšã©ãŒã«ãªããŸãã
ãããâŠ
ãèå¥å wchar_t ã¯æªå®çŸ©ããšããèŽåœçãšã©ãŒã«ãªããšæã£ãŠããã®ã§ããã
ããã§ã¯ãªãã®ãèŠæ ŒãšããŠæ£ããã®ã§ããã
ïŒãããã #if ã®äžã§ã¯ sizeof ã䜿ããªãã®ãâŠ
å®éã®åŠçç³»ã§ã¯
ã»#if ã®äžã§ sizeof ã䜿ããããã«ç¬èªæ¡åŒµãæœããŠãã
ã»æªå®çŸ©ã®èå¥åã䜿ã£ãããšã©ãŒãªããèŠåãåºã
ãã®ããããšæãã®ã§ãäœè£ã®ãããšãã«è€æ°ã®åŠçç³»ã§ç¢ºèªããŠã¿ãŸãã
> >ããã¯ããªããã»ããµã®æ®µéã§ãšã©ãŒã«ãªãã®ãæ£ãããã§ãããã
>
> çç±ã¯ãšããããçµè«ã ãã¯åã£ãŠããŸãã:-)
ããããšãããããŸãããã¯ããã®å Žå㯠WCHAR_MAX ã䜿ãããšã«ãªããŸããã
æŽå²çã«ã¯ïŒ£ã®ã³ãŒãã®ã³ã³ãã€ã«ã¯ããªããã»ããµãããŒãµãã³ãŒããžã§ã
ã¬ãŒã¿ãã¢ã»ã³ãã©ããªã³ã«ã®ïŒæ®µéã§ãtypedef ã¯ããŒãµã®æ
åœã ããããã®
åã®ããªããã»ããµãæ
åœãã #if ã§ã¯æ±ããªãã¯ããèŠæ Œãããã远èªãã
èŠå®ãããŠããã¯ãããšäºæ³ããŠããŸããã
In article <3ED62BBF...@ht.sakura.ne.jp>, IIJIMA Hiromitsu <delm...@ht.sakura.ne.jp> writes
> ïŒãããã #if ã®äžã§ã¯ sizeof ã䜿ããªãã®ãâŠ
ã§ãã#if ãããªããŠãif ã§æžãã°è¯ããšæããŸããã©ã
ãªããåé¡ãããã§ãã?
> å®éã®åŠçç³»ã§ã¯
> ã»#if ã®äžã§ sizeof ã䜿ããããã«ç¬èªæ¡åŒµãæœããŠãã
> ã»æªå®çŸ©ã®èå¥åã䜿ã£ãããšã©ãŒãªããèŠåãåºã
èªåã§æžãããã®ã§ã¯ãmacro ã®å±éã1 pass ã§è¡ãã®ã§ã
sizeof ã¯äœ¿ããŸãã#if ã§ã¯æªå®çŸ©ã®èå¥åã¯0ãšå€æãã
ã®ã䟿å©ã ãããšæ³åããŸããèªåã®ã§ã¯ãšã©ãŒã«ããŠãããªã
> ãã®ããããšæãã®ã§ãäœè£ã®ãããšãã«è€æ°ã®åŠçç³»ã§ç¢ºèªããŠã¿ãŸãã
ã£ãŠããã§ããããªãã®ã¯(åã®ãã®ä»¥å€)ãªããšæãã
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
æ²³éçæ²» @ çç倧åŠå·¥åŠéšæ
å ±å·¥åŠç§,
ç§åŠæè¡æ¯èäºæ¥å£ããããç ç©¶21(æ©èœãšæ§æ)
> ã§ãã#if ãããªããŠãif ã§æžãã°è¯ããšæããŸããã©ã
> ãªããåé¡ãããã§ãã?
ããæ®éã¯ãã£ãããã¡ããšæé©åãªãã·ã§ã³ã€ããã° if(0) ã¯ã³ã³ãã€ã©ã
äžžããšåé€ããŠãããŸããã®ãã
ãã ä»åã®å Žåãèªäœã®ããããã¡ã€ã«ã§
#if WCHAR_MAX==0x7FFFUL || WCHAR_MAX==0xFFFFUL
#define UCS2 wchar_t;
typedef uint_least32_t UCS4;
//åŸç¥
ãšæžããŠãããšãã°
UCS2 *foo(UCS2[]);
ãšé¢æ°ã宣èšããŠãWin32 ç°å¢ã§ã¯ãã® foo() ã®åŒæ°ã« wchar_t ã®é
åãæž¡ãããšããããšãããããã§ãããOS ã® MultiByteToWideChar
㯠wchar_t ã®é
åã«ããŒã¿ãè¿ãã®ã§ã
ã§ãwchar_t ã UCS-2 ã®åŠçç³»ã§ã¯ foo() ã« wchar_t ã®é
åãæž¡ããŠ
ãæå¥ãèšãããããã€ãwchar_t ã UCS-4 ã®åŠçç³»ãå
·äœçã«èšããš
glibc ãšãã§ã¯ foo() ã« wchar_t ã®é
åãæž¡ãããšãããšãšã©ãŒãªã
ãèŠåã«ãªãããšãã仿§ã«ããããã§ãã
ãšãããšãèå¥å UCS2 㯠typedef ã§ã¯ãªã #define ã§å®çŸ©ããå¿
èŠ
ãããããšããããã§ãã
âŠæ±ãæ¹æ³ã§ããã¯ãã
ã¯ãã£ãããã®ã»ãã³ãã³ã¯äœèšã
In article <3ED6E270...@ht.sakura.ne.jp>, IIJIMA Hiromitsu <delm...@ht.sakura.ne.jp> writes
> ãã ä»åã®å Žåãèªäœã®ããããã¡ã€ã«ã§
> #if WCHAR_MAX==0x7FFFUL || WCHAR_MAX==0xFFFFUL
> #define UCS2 wchar_t;
> typedef uint_least32_t UCS4;
ã£ãŠããšãªãããã®ããããã¡ã€ã«ãçæãããããªconfigure script
æžãæ¹ãæè¿ã¯æ®éããç¥ããªãã§ãããã§ãconfig.h ãinclude
ãããšã
In article <3ED62BBF...@ht.sakura.ne.jp>,
IIJIMA Hiromitsu <delm...@ht.sakura.ne.jp> writes:
>> typedef 㯠typedefåãå®çŸ©ãããã®ã§ãã£ãŠãåãå®çŸ©ããã®ã§ã¯
>> ãããŸããããã
>ãªãã»ã©ããtypedef åããšããããã¡ããšããèšèããããã§ããã
ISO ã§ã¯ãtypedef nameãã§ãããJIS ã§ã¯äœãšèš³ããŠãããã¯åãã
ãŸããããtypedefåãã¯ãç§ãåæã«ã€ããèš³èªã§ãã(_ _;
>> > #if sizeof(wchar_t)==2
>>
>> 0 ( 0 ) == 2
>>
>> ãšè§£éãããæ§æãšã©ãŒã«ãªããŸãã
>ãèå¥å wchar_t ã¯æªå®çŸ©ããšããèŽåœçãšã©ãŒã«ãªããšæã£ãŠããã®ã§ããã
>ããã§ã¯ãªãã®ãèŠæ ŒãšããŠæ£ããã®ã§ããã
>ïŒãããã #if ã®äžã§ã¯ sizeof ã䜿ããªãã®ãâŠ
ã¯ãã
>å®éã®åŠçç³»ã§ã¯
>ã»#if ã®äžã§ sizeof ã䜿ããããã«ç¬èªæ¡åŒµãæœããŠãã
>ã»æªå®çŸ©ã®èå¥åã䜿ã£ãããšã©ãŒãªããèŠåãåºã
>ãã®ããããšæãã®ã§ãäœè£ã®ãããšãã«è€æ°ã®åŠçç³»ã§ç¢ºèªããŠã¿ãŸãã
èŠæ Œã«åŸããšã
1. ç©ççãªãœãŒã¹ãã¡ã€ã«ã®ãã«ããã€ãæåãæåéåã«å€æã
end-of-line indicator ãæ¹è¡æåã«å€æã
trigraph sequence ã察å¿ããåäžæåå
éšè¡šçŸãžå€æã
2. ã\ ïŒ æ¹è¡æåããåé€ããŠè«ççãªãœãŒã¹ãã¡ã€ã«ãžå€æã
3. ååŠçããŒã¯ã³ãšç©ºçœé¡ã«åè§£ã
4. ååŠçåœä»€ã®å®è¡ããã¯ãåŒåºãã®å±éã_Pragma ã®å®è¡ã
#include ååŠçåœä»€ã§ã¯ãåã蟌ãŸããããããŒïŒãœãŒã¹ãã¡ã€ã«
ã«ã€ããŠã1ïœ4 ãååž°çã«é©çšã
5. æå宿°ïŒã¹ããªã³ã°ãªãã©ã«ã®ãœãŒã¹æåéåèŠçŽ ãšãšã¹ã±ãŒã
ã·ãŒã±ã³ã¹ã察å¿ããå®è¡æåéåèŠçŽ ãžå€æã
6. 飿¥ãããªãã©ã«ããŒã¯ã³ã®é£çµã
7. ååŠçããŒã¯ã³ãããŒã¯ã³ã«å€æããäžã€ã® transration unit ãš
ããŠãæ§æïŒæå³è§£æãè¡ãªãã翻蚳ããã
8. å€éšãªããžã§ã¯ãïŒé¢æ°ã®åç
§ã解決ããã©ã€ãã©ãªã³ã³ããŒãã³
ãããªã³ã¯ããäžã€ã®ããã°ã©ã ã€ã¡ãŒãžã«ãŸãšããã
ã® 8 ãã§ãŒãºã«åãããªããã°ãªããŸããã
ã#if ã®äžã§ sizeof ã䜿ããããã«ç¬èªæ¡åŒµããããšãèŠæ ŒåèŽã§ã¯
ãªããªããŸãã
ãæªå®çŸ©ã®èå¥åã䜿ã£ããèŠåãåºããã®ã¯èŠæ ŒåèŽã§ããããšã©ãŒ
ã«ãããšèŠæ ŒåèŽã§ã¯ãªããªããŸãã
>æŽå²çã«ã¯ïŒ£ã®ã³ãŒãã®ã³ã³ãã€ã«ã¯ããªããã»ããµãããŒãµãã³ãŒããžã§ã
>ã¬ãŒã¿ãã¢ã»ã³ãã©ããªã³ã«ã®ïŒæ®µéã§ãtypedef ã¯ããŒãµã®æ
åœã ããããã®
>åã®ããªããã»ããµãæ
åœãã #if ã§ã¯æ±ããªãã¯ããèŠæ Œãããã远èªãã
>èŠå®ãããŠããã¯ãããšäºæ³ããŠããŸããã
ãããå¿äœã¶ã£ãŠ^H^H^H^H^H峿 Œã«å®çŸ©ããã®ã ãšæããŸãã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ