[sugj-free:3284] Re: おもしろい書き方

Hiroshi Miura miurahr @ acm.org
2008年 3月 14日 (金) 20:58:24 JST


お久しぶりです。こういうのは、今のプログラミングの考え方からは、悪い例になりそうですね。

三浦

On 3/14/08, ribbongw master <ribbon @ ns.ribbon.or.jp> wrote:
> Sambaに関する話題ですが、やや余談的なところもあるので、
> こっちにします。
>
> たまたま、Sambaのソースを見ていたんですが、
> lib/debug.cのDebug1という関数の中に、こういうコードを見つけました。
>
>  771 #ifdef WITH_SYSLOG
>  772         if( !lp_syslog_only() )
>  773 #endif
>  774         {
>  775                 if( !dbf ) {
>  776                         mode_t oldumask = umask( 022 );
>  777
>  778                         dbf = x_fopen( debugf,
> O_WRONLY|O_APPEND|O_CREAT, 0644 );
>  779                         (void)umask( oldumask );
>  780                         if( dbf ) {
>  781                                 x_setbuf( dbf, NULL );
>  782                         } else {
>  783                                 errno = old_errno;
>  784                                 return(0);
>  785                         }
>  786                 }
>  787         }
>  788
>
> ifdefで囲まれている部分、WITH_SYSLOGが定義されていないと、
> if文が消えてなくなります。しかし、次の中括弧の部分は、
> ifdefがあろうとなかろうと、ブロックとして有効なんですね。
> 効率的な書き方といえばそうなんですけどねえ...
>
> こういう書き方、始めて見ました。
>
> oota
>

-- 
Sent from Gmail for mobile | mobile.google.com

HIroshi Miura
NTT DATA Corp. and IPA OSS center
(株)NTTデータ /(独)情報処理推進機構
三浦広志



sugj-free メーリングリストの案内