Entry

取って付けたような屁理屈と思ったこととか

2012年06月27日

以前,C言語の定数にマクロ定数を使うのは避けようね,みたいな話を書いたんだけれども,某所で反応があったらしく,「こいつC言語しらねーんじゃねぇの?」的な話があってゲンナリ。ま,人に迷惑かけなきゃどんなもん書いてもいいと思うんですよ。あたしにとっては迷惑なので,近寄らないでほしいけど。

なんでも曰く,マクロ定数使えないと,配列の定義時に要素数を指定できないとか,配列の外部リンケージを持てないとか云々。ま,そりゃそうなんだけどね。昔の処理系しか使えないかわいそうな環境では。保守開発では普通にそゆこともある。新規開発でやる場合は意図が分からん。一方,そゆこと言うのに限って,レガシーなコードに対しては嫌悪感を持っていたりもする。このお年頃は難しい,ほんと。

つか,それ以前になんつか,こゆ不都合を持ち出してる時点で,ある種のトホホ感がある。まずもって,現実のプログラムで配列の要素数をマクロ定数として define するのはどういう場合なのか。しかも,分割コンパイルに当たって,配列の要素数をエクスポート(extern)する場合とゆのはどういう場合なのか。学生さんのプログラムでは,なぜか決まって配列の要素数 N が define されているけれども(そゆ風にセンセが教えてくれたんだろか),こゆのをやりたいって話なら,それ自体やめとけと言いたい。

一応書いておくと,最近の処理系であっても,マクロ定数を使わなくちゃいけない場合とゆのもあるんですよ。どゆ場合かというと,それは(実行時ではなく)コンパイル時に必要とする値の場合(ライブラリのバージョン番号とか,デバッグレベルの定数とか)。いずれにしても,マクロ定数は,プログラムに対するメタ的な表現なわけで,型安全やコードサイズ,デバッグ時の問題を除いても,実行時に使用する定数としてマクロ定数を定義するのはおかしい。理屈からしても,これまでプログラムを作ってきた経験からしても,「できる限り避けるべき」とゆ立場に変わりはない。

ま,ここでつぶやいてもしょうがないとは思う。勝手にやってくれ,とかとか。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN