こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Visual Studio2008でヘッダファイルが更新されない

C++で、単純な計算プログラムを作成しています。

main.cとinit.hの2つのファイルで構成しています。2つとも、プロジェクトの親フォルダに入っています。
ヘッダファイルを変更して、ソリューションのリビルドをしても、ヘッダファイルの変更が反映されません。

構造体をヘッダファイルに記載していて、メンバを追加してリビルド後も反映されません。#defineでヘッダに記載していた定数を変数に変更しようとして、define文を消してリビルドしても、その値がずっと定数のままになってしまいます。

init.hファイルのファイル名をinit2.hに変更して、includeファイルも#include "init2.h"に書き換えてビルドすると反映されます。非常に不思議です。どこかVisual Studioの設定のような気がするのですが、環境設定の方法がわからず困っております。

どなたかご教示・ヒント・キーワード等よろしくお願いします。

投稿日時 - 2009-10-14 17:26:14

QNo.5366901

すぐに回答ほしいです

質問者が選んだベストアンサー

同じファイル名のヘッダファイル(今回はinit.h)が2つできていたりしませんか ?
表示されているヘッダファイルとプロジェクトに登録されているヘッダファイルが別物であれば同じような現象になるような気がしますが ?

一度表示されているヘッダファイルを「閉じ」て、

(1)ソリューションイクスプローラのヘッダファイルにinit.hが登録されていたら、それを一旦削除して、もう一度追加しなおして、

(2)ソリューションイクスプローラのヘッダファイルにinit.hが登録されていなければ、追加して、

新しく登録されたinit.hを使用してみたらどうでしょうか。

投稿日時 - 2009-10-14 19:16:48

補足

ご教示ありがとうございました。
最初にヘッダファイルのDefine定数を変更してビルドしました。mainではこの変更は反映されないことを確認しました。
(1)の削除のときに、「クリア」と「完全削除」を聞かれたので、init.hをあらかじめ別名でコピーしておいて、完全削除を選びました。するとinit.hファイルはディスクから完全削除されました。コピーしておいたヘッダファイルを戻します。この時点で、ビルドを実行するとソリューションエクスプローラにヘッダファイルがないのにビルドが実行できて、定数の変更も反映されることを確認しました。
何となく気持ち悪いのですが、(2)は不要のままプログラム開発してもビルドできてしまうのはどこかの設定が悪いのでしょうか?

また、(1)を実行しないとヘッダファイルの変更が反映されないのはなかなか効率が悪く困っております。何か根本的な原因があるのでしょうか?(オプション設定等?)よろしくお願いします。

投稿日時 - 2009-10-15 10:06:20

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

普通はリビルドとかでいけると思うんだけど、何か壊れたのかな。
でも、そんなに単純なファイル構成なら、プロジェクトを再作成
しても大した手間ではないような気もする。

で、プロジェクトの親フォルダってなんだろかな。
ソリューションエクスプローラには、ソースファイル・ヘッダーファイル
ってフォルダがあると思うんだけど、そこにそれぞれ、
main.c, init.hが表示されているということ?

投稿日時 - 2009-10-14 17:43:22

補足

ご教示ありがとうございます。「親フォルダ」というあいまいな用語を使ってすみません。親フォルダは、プロジェクトのあるフォルダを意味していました。Windowsのエクスプローラ上、2つのファイルは、同一フォルダ内にあります。また、ご指摘のようにソリューションエクスプローラ上もプロジェクト内にあります。よろしくお願いします。

投稿日時 - 2009-10-15 09:58:55

あなたにオススメの質問