Path: ccsf.homeunix.org!ccsf.homeunix.org!news1.wakwak.com!nf1.xephion.ne.jp!onion.ish.org!onodera-news!newsfeed.media.kyoto-u.ac.jp!newsfeed.mesh.ad.jp!t-newsgw1.odn.ne.jp!nwall.odn.ne.jp!not-for-mail From: IIJIMA Hiromitsu Newsgroups: fj.comp.lang.c Subject: Re: =?iso-2022-jp?B?dHlwZWRlZhskQiRLJEQkJCRGM05HJyQ1JDskRiQvJEAkNRsoQg==?= =?iso-2022-jp?B?GyRCJCQbKEI=?= Date: Fri, 30 May 2003 00:48:15 +0900 Organization: DENNOU GEDOU GAKKAI, N. D. D. http://www.dennougedougakkai-ndd.org Lines: 45 Message-ID: <3ED62BBF.5A246007@ht.sakura.ne.jp> References: <3ED5524B.D4F97285@ht.sakura.ne.jp> NNTP-Posting-Host: eatcf-119p63.ppp15.odn.ne.jp Mime-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit X-Trace: nwall1.odn.ne.jp 1054223300 40439 218.218.206.63 (29 May 2003 15:48:20 GMT) X-Complaints-To: news@odn.ad.jp NNTP-Posting-Date: Thu, 29 May 2003 15:48:20 +0000 (UTC) X-Mailer: Mozilla 4.78 [ja] (Win98; U) X-Accept-Language: ja,en,zh-TW,zh,zh-CN,de,es,ko Xref: ccsf.homeunix.org fj.comp.lang.c:7 いいじまです。 > 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 を使うことになりますね。 歴史的にはCのコードのコンパイルはプリプロセッサ、パーサ、コードジェネ レータ、アセンブラ、リンカの5段階で、typedef はパーサの担当だから、その 前のプリプロセッサが担当する #if では扱えないはず、規格もそれを追認する 規定をしているはず、と予想していました。 ======================================================================== 飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/ IIJIMA Hiromitsu, aka Delmonta mailto:delmonta@ht.sakura.ne.jp