ヘッダファイルは、2回以上読込まれないようにするために、いわゆるincludeガードをすると思う。
私の名前付けルールは、こんな感じだ。
#ifndef MY_HEADER_H__
#define MY_HEADER_H__~~
#endif //MY_HEADER_H__
昔は、マクロ名の前にアンダーラインを置いていた。
たぶん、読んだ本だか参考にしたコードがそうなっていたからだろう。
C言語規格上、それはよろしくないというのを知ってからは、使わないようになった。
コーディング作法ガイドでもp.75にその話が書かれていた。
マクロ名だけ気にしていたのだが、変数名や関数名もそうなのだな。
まあ、2回使われているなら衝突してビルド時に気付きそうな気もするが、使っただけで動作が変わるマクロとかがあるとやっかいだから、使わないに越したことはないだろう。
最近知ったのだが、gccでもincludeガードの#pragma onceが使えるようだった。
#pragma once
~
VC++だけかと思っていたが、けっこうあるんだな。。。
gccも3.4からってことは、ずいぶん前から使えたんだ。
たまにやってしまうのが、ヘッダファイルをコピーして中身を書き換えるのだが、ガード下マクロ名を変更し忘れる、というものだ。
includeが重なっていなければうまくいくけど、順番によってもう片方が無効になってしまうので、しばし理由がわからずに悩んでしまうのだ。
でもまあ、pragmaだから、こういうルールはプロジェクトで統一した方が良かろうね。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。