
No.2ベストアンサー
- 回答日時:
おそらくですが・・・
#pragma onceがサポートされたのはどうもVC5.0からのようで、それ以前のバージョンのソースとの互換のために、質問のマクロをつける動作をしていたんだと思います。
で、.Netになってから大幅に動作変更があったので、ついでにウィザードの動作も変更したのかと・・・
No.1
- 回答日時:
手元にVS6.0とVS2005しかないので、それらとの比較になりますが・・・
そのdefine文は以下のような感じで記述されていませんか?
#if !defined(AFX_・・・・・・_INCLUDED_)
#define AFX_・・・・・・_INCLUDED_
中略
#endif // !defined(AFX_・・・・・・_INCLUDED_)
これらは、各ソースファイルをコンパイルする際に、同じヘッダファイルが複数回インクルードされてしまっても、宣言が1度だけ行われるようにするための手法です。
VS6.0あたりではこの定義がウィザードを利用してクラスを追加すると、自動的に記述されます。
VS2005ではこの手法の代わりに、「#pragma once」というプラグマがあり、これをヘッダファイルの先頭に記述しておくと同じような動作をしてくれるようになっています。
VS2003を利用したことがないので、どちらになっているかわかりませんが、ヘッダファイルに「#pragma once」の記述があれば質問のif~defineの手法は必要ないです。
違ってたらゴメンナサイ。
この回答へのお礼
お礼日時:2010/04/13 20:46
回答ありがとうございます.
その通りです.私がウィザードを利用しても自動生成されないので困っておりました.重複インクルードを防ぐために新規に作成したファイルについては#pragma onceを用いています.
しかし#pragma onceでこと足りてしまうのであれば,なぜ上記のようなdefine文があるのか理解できません.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[c++] <pthread.h>がinclude で...
-
” OS ビルド ” の意味が分か...
-
gcc で シフトJISを通す方法を...
-
【VC++6.0(MFC)】警告「LINK : ...
-
ビルドとリビルドの違いを教え...
-
セミコロンについて
-
PRO*C コンパイルエラー
-
コンパイルできない・・。(VC+...
-
VBAを何回も作り直して、容量が...
-
VisualStudio.netでmemcmp関数...
-
クリティカルエラー Expressio...
-
コンパイルエラー:ユーザ定義...
-
C言語でMIDIを鳴らしたいです。
-
Makefile作成時の拡張子.oとは?
-
python エラー
-
アプリケーションのDLLファイル...
-
<unistd.h>をVisualStudioでつ...
-
vb2010にてASPWEBシステムを作...
-
リンカのエラー
-
コールバック関数指定時のエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
Makefile作成時の拡張子.oとは?
-
VBAを何回も作り直して、容量が...
-
エクセルVBAではRound...
-
マクロ コンパイルがグレーバック
-
C言語でヘッダファイルにグロー...
-
ILSpyで、デコンパイルできない。
-
【VC++6.0(MFC)】警告「LINK : ...
-
「fatal error C1189」を回避す...
-
1 つ以上の複数回定義されてい...
-
クリティカルエラー Expressio...
-
動的な変数名のつけ方について
-
C言語のコンパイルができません
-
C++コンパイル時に『 C1083: in...
-
セミコロンについて
-
他のLinuxでも動くa.outの作り方
-
includeと#include
-
ビルドとリビルドの違いを教え...
-
コンパイルエラー:ユーザ定義...
-
MFCのエラーについて
おすすめ情報