ヘッダー内の定義(の変更)が反映されないことがあります。
例えば、
"stdafx.h"において
#define a 123
と定義して、関数項目main.cppとfunc.cpp両方でaを使うとします。
もちろんどちらも最初に#include "stdafx.h"とインクルードしています。
ですがdefine定義を#define a 456のように変更し実行すると、
main.cpp内ではa=456で動作し、func.cpp内ではa=123で動作する。
というような症状がしばしば現れます。
Visual stadio 2008でプログラミングしています。
c++ 6.0のときも同様の症状が現れていたのですが、何か問題があるのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
"stdafx.h" このヘッダを使わないというのはどうでしょう。
(使わなくても組めますよね?)
main.cpp なら main.h を
func.cpp なら func.h を
それぞれ作りましょう。
多分 main.cpp の関数が func.cpp の関数を呼び出すものだと思います。
その場合 func.h に定義して、
main.cpp で func.h をインクルードしましょう。
stdafx.h はプリコンパイル済みのヘッダー?とかだった気がします。
知識が無いので使っていませんが、無くて困ったことは無いです。
(むしろあったら邪魔でした)
stdafx.h については私も知りたいですね。
No.2
- 回答日時:
プリコンパイル済みヘッダは
まず変更されることが無い箇所(システムライブラリのインクルード部分など)をあらかじめコンパイルしておくことで、
ビルド時間を短縮するためのものです。
なので変更される可能性の高い記述は
基本的にプリコンパイル済みヘッダに書くべきではないです。
(もし変更した場合は、リビルドしないとだめなんじゃないかな。)
よく分からないなら使わないというのもありでしょう。
ビルド時間が長くて困ってないなら別に必要ないでしょうから。
参考URL:http://sgry.jp/pgarticles/precompiled_header.html
回答ありがとうございました。
>>なので変更される可能性の高い記述は
>>基本的にプリコンパイル済みヘッダに書くべきではないです。
たしかにそのようです。
それぞれのヘッダファイルを作ることにしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<math.h>があるのにsqrtが・...
-
Makefile作成時の拡張子.oとは?
-
” OS ビルド ” の意味が分か...
-
「fatal error C1189」を回避す...
-
クリティカルエラー Expressio...
-
VB6とInputManソフトの関係
-
ILSpyで、デコンパイルできない。
-
セミコロンについて
-
VBAを何回も作り直して、容量が...
-
エクセルVBAではRound...
-
戻り値について
-
VMwareのLinuxでコンパイルでき...
-
エクセルのマクロで教えて下さい
-
Visual Studio .net ヘッダーフ...
-
MFCのエラーについて
-
外部シンボル "_main"は未解決です
-
C++コンパイル時に『 C1083: in...
-
PRO*C コンパイルエラー
-
1 つ以上の複数回定義されてい...
-
関数形式マクロ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
VBAを何回も作り直して、容量が...
-
「fatal error C1189」を回避す...
-
C言語でヘッダファイルにグロー...
-
Makefile作成時の拡張子.oとは?
-
エクセルVBAではRound...
-
1 つ以上の複数回定義されてい...
-
コンパイルエラー:ユーザ定義...
-
セミコロンについて
-
ILSpyで、デコンパイルできない。
-
[c++] <pthread.h>がinclude で...
-
クリティカルエラー Expressio...
-
マクロ コンパイルがグレーバック
-
PRO*C コンパイルエラー
-
外部シンボル "_main"は未解決です
-
他のLinuxでも動くa.outの作り方
-
<math.h>があるのにsqrtが・...
-
戻り値について
-
pyc 編集 閲覧
-
C++コンパイル時に『 C1083: in...
おすすめ情報