スレッド: [cppll:12899] <tips> 自己解説型ディレクティブアウト

スレッド

[cppll:12899] <tips> 自己解説型ディレクティブアウト

[ | ▲ / | ]
Subject:
[cppll:12899] <tips> 自己解説型ディレクティブアウト
From:
Wraith the Trickster <wraith@...>
Date:
Sun, 22 Apr 2007 21:24:28 +0900
X-Mailer:
Microsoft Office Outlook 12.0
Message-Id:
<009a01c784d9$2e2736c0$8a75a440$@net>
道化師です。

よく「複数行のコードを外したいときはコメントアウトじゃなくてディ
レクティブ(#if 0)を使え」とか言われますが、#if 0じゃなんの為の
にそうしてあるのか分かりにくいんで最近は #if defined(HOGEHOGE)
〜 #endif の形で HOGEHOGE の部分に意味がわかるような(実際には
定義しない)マクロ名を入れるようにしてます。

例えば、そのコードがなくても問題なく動作することが確認できたら
消去する予定のコードは #if defined(DELETE_ME) 〜 #endif で囲った
り、どこぞのサンプルコードをメモ的にソースに残す場合には #if
defined(JUST_A_MEMO) 〜 #endif で囲ったり、いつでもコンパイル・
テストが可能状態を維持する為に編集中のコードは #if
defined(CODING_NOW) 〜 #endif で囲ったりなどといった具合です。

□■□■                  Wraith the Trickster                  □■□■
■□■□ 〜I'll go with heaven's advantage and fool's wisdom.〜 ■□■□
[cppll ML] http://www.trickpalace.net/cppll/
[cppll BBS] http://jbbs.livedoor.com/computer/5651/cppll.html

[cppll:12903] Re: <tips> 自己解説型ディレクティブアウト

[ | / | ]
Subject:
[cppll:12903] Re: <tips> 自己解説型ディレクティブアウト
From:
kosaki <m-kosaki@...>
Date:
Tue, 24 Apr 2007 00:52:47 +0900
X-Mailer:
Becky! ver. 2.24.02 [ja]
Message-Id:
<20070424005104.188D.M-KOSAKI‐at‐ceres.dti.ne.jp>
In-Reply-To:
12899
References:
12899
kosakiです。

> よく「複数行のコードを外したいときはコメントアウトじゃなくてディ
> レクティブ(#if 0)を使え」とか言われますが、#if 0じゃなんの為の
> にそうしてあるのか分かりにくいんで最近は #if defined(HOGEHOGE)
> 〜 #endif の形で HOGEHOGE の部分に意味がわかるような(実際には
> 定義しない)マクロ名を入れるようにしてます。

#if 0/* for HOGE HAGE */

でじゅうぶんでない?
#if defined(HOGEHOGE) はHOGEHOGEが定義されてないことを
探さなならん。

--
kosaki <m-kosaki@...>

[cppll:12904] Re: <tips> 自己解説型ディレクティブアウト

[ | / | ]
Subject:
[cppll:12904] Re: <tips> 自己解説型ディレクティブアウト
From:
shannon <shannon@...>
Date:
Tue, 24 Apr 2007 09:38:43 +0900
X-Mailer:
Microsoft Office Outlook 12.0
Message-Id:
<000c01c78608$eb935470$c2b9fd50$@info>
In-Reply-To:
12903
References:
12899 12903
シャノンです。

> #if defined(HOGEHOGE) はHOGEHOGEが定義されてないことを
> 探さなならん。

コメントアウト目的なら、その直前に
// #define HOGEHOGE
とか書いておくとか。

俺は defined を使わずに、
#if HOGEHOGE
の方が好みです。

=-=-=-=-=-=-=-=-=-=-=
シャノン
shannon@...
=-=-=-=-=-=-=-=-=-=-=

[cppll:12905] Re: <tips> 自己解説型ディレクティブアウト

[ | / | ]
Subject:
[cppll:12905] Re: <tips> 自己解説型ディレクティブアウト
From:
T.P.S.Nakagawa <yaemon@...>
Date:
Tue, 24 Apr 2007 12:49:05 +0900
Message-Id:
<462D7E31.6040402‐at‐kikansha.jp>
In-Reply-To:
12904
References:
12899 12903 12904
パイプ喫いの中川です。

11年前(C言語だった) から

#ifdef README

#endif /* README */
と書いています。

(2007/04/24 9:38), shannon さんは書きました:
>> #if defined(HOGEHOGE) はHOGEHOGEが定義されてないことを
>> 探さなならん。
>
> コメントアウト目的なら、その直前に
> // #define HOGEHOGE
> とか書いておくとか。

#undef HOGEHOGE /* It's only comment */
?

あ、でもそれはそれで問題があるか
> 俺は defined を使わずに、
> #if HOGEHOGE
> の方が好みです。

#ifdef README
を採用したのは、プリプロセッサで README の中だけを取り出すやり方が
あったからのような気がします。


...もう具体的なコマンドは忘れたか、気のせいかもしれませんが。

--
   T.Nakagawa ( mailto:yaemon@... )
   courier-imapd のおかげで職場から
   http://www.kikansha.jp/~yaemon/
   mixi: http://mixi.jp/show_friend.pl?id=23211

[cppll:12908] Re: <tips> 自己解説型ディレクティブアウト

[ | / | ]
Subject:
[cppll:12908] Re: <tips> 自己解説型ディレクティブアウト
From:
Wraith the Trickster <wraith@...>
Date:
Tue, 24 Apr 2007 22:08:06 +0900
X-Mailer:
Microsoft Office Outlook 12.0
Message-Id:
<010b01c78671$9b54a270$d1fde750$@net>
In-Reply-To:
12905
References:
12899 12903 12904 12905
道化師です。

[cppll:12905] Re: <tips> 自己解説型ディレクティブアウト】
>#ifdef README
>を採用したのは、プリプロセッサで README の中だけを取り出すやり方が
>あったからのような気がします。
>
>
>...もう具体的なコマンドは忘れたか、気のせいかもしれませんが。

それ、思い出したらkwsk!

それとはちょっと違うけど、先述の DELETE_ME の部分をソースファイル
から削除したり、オレオレ #pragma なんかを作成・利用する為に cpp
系の機能を持つモジュールとそれを利用したツール群の作成を昨今考え
てるんだけど、すでにその代わりになるようなモノがあるんなら自作す
んのは馬鹿らしいし。

で、よく知らなかったんだけど、cpp コマンドって定義されている
マクロの一覧を作成する機能なんかもあるんですね。てか、ちゃんと
独立した cpp コマンドを持つ処理系ってなにげに少数派?

# パッと見たところ、bcc と gcc だけ。

□■□■                  Wraith the Trickster                  □■□■
■□■□ 〜I'll go with heaven's advantage and fool's wisdom.〜 ■□■□
[cppll ML] http://www.trickpalace.net/cppll/
[cppll BBS] http://jbbs.livedoor.com/computer/5651/cppll.html

[cppll:12909] Re: <tips> 自己解説型ディレクティブアウト

[ | / ▼ | ]
Subject:
[cppll:12909] Re: <tips> 自己解説型ディレクティブアウト
From:
Wraith the Trickster <wraith@...>
Date:
Tue, 24 Apr 2007 22:14:19 +0900
X-Mailer:
Microsoft Office Outlook 12.0
Message-Id:
<011901c78672$79427260$6bc75720$@net>
In-Reply-To:
12903
References:
12899 12903
道化師です。

[cppll:12903] Re: <tips> 自己解説型ディレクティブアウト】
>> よく「複数行のコードを外したいときはコメントアウトじゃなくてディ
>> レクティブ(#if 0)を使え」とか言われますが、#if 0じゃなんの為の
>> にそうしてあるのか分かりにくいんで最近は #if defined(HOGEHOGE)
>> 〜 #endif の形で HOGEHOGE の部分に意味がわかるような(実際には
>> 定義しない)マクロ名を入れるようにしてます。
>
>#if 0/* for HOGE HAGE */
>
>でじゅうぶんでない?
>#if defined(HOGEHOGE) はHOGEHOGEが定義されてないことを
>探さなならん。

それは一理ますね。あと、ちょっとゴメンナサイ、私少し嘘ついた
アルヨ。"実際には定義しない"って部分がちょっと嘘。

例えば、DELETE_ME とかはいざテストしてみたらうまくいかなかった
場合に DELETE_ME をコンパイルオプションで指定して動作を比較し
たりするですよ。あと、CODING_NOW もちょっと試しに走らせたりする
時に。加えて、これは完璧に私個人の都合ですけど、別メールでも
書いたように cpp 系のツールを作ってごにょごにょするようなこ
とも考えてるんでマクロである必要があるですヨ。

□■□■                  Wraith the Trickster                  □■□■
■□■□ 〜I'll go with heaven's advantage and fool's wisdom.〜 ■□■□
[cppll ML] http://www.trickpalace.net/cppll/
[cppll BBS] http://jbbs.livedoor.com/computer/5651/cppll.html

Navigation

検索

[検索ヘルプ]

Maintener: Tietew <www.tietew.jp>
Powered by Ruby on Rails, Mongrel, PostgreSQL, and Hyper Estraier.
click here