- ベストアンサー
VC++でソースファイルに2つのデータを作る場合。
Microsoft Visual C++ 2008 Express Editionというコンパイラを使っています。 新しいプロジェクトを作成すると、ソースファイル、ヘッダーファイル、リソースファイルの3つのフォルダが作成されます。 ソースファイルのフォルダに.cppのプログラムを作成しています。 もう一つ別のプログラムを実行しようと思って、ソースファイルのフォルダにプログラムを追加して実行すると必ずエラーが出てしまいます。 エラーの内容は「1 つ以上の複数回定義されているシンボルが見つかりました。」のようです。 1つのソースファイルに2つ以上のプログラムは作れないのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>もう一つ別のプログラムを実行しようと思って だったら「今のプロジェクトをすべて閉じてから、別のプロジェクトを開く」ってやらないと駄目。 「プロジェクト1個につき、プログラム1個」と決まってます。 そして「プログラム1個につき、実行開始場所は1ヵ所」と決まっています。 さらに「実行開始場所の名前は、固定になってて変えられない」と決まっています。 そうすると「1個のプロジェクトに、2個のプログラムがあると、名前が固定になってて変えられない実行開始場所が2ヶ所」になってしまいます。 「名前が固定になってて変えられない実行開始場所が2ヶ所」あれば、当然「1 つ以上の複数回定義されているシンボルが見つかりました。」って言われて当たり前です。 1個しかあっちゃいけない物を2個にしたんですから、当然と言えば当然。 2つのプログラムを同じに開きたいなら「VCを2つ起動」しなきゃなりません。そして、それぞれのVCで、異なるプロジェクトを1個だけ開いて下さい。
その他の回答 (2)
- zwi
- ベストアンサー率56% (730/1282)
1つのプロジェクトで1つのプログラム(exe)ですから、1つのプロジェクトに同じ関数名は1つしか作れません。さらにmainも1つしか存在できませんので、プログラムという単位で見るならmainが2つもあるのは問題外ですね。2つもあったらOSがどっちのmainを動かしたいのか分からないですからね。 mainひとつにつき1つのプロジェクトを作成してください。
お礼
勉強になりました。新しいプロジェクトで新しいプログラムを開くことにします。
- sonata1229
- ベストアンサー率36% (76/206)
>1つのソースファイルに2つ以上のプログラムは作れないのでしょうか? まったくもって意味が分かりませんが…。 プロジェクトがどういう構成になっているのか把握できないので、 あくまで予想ですが、 ヘッダファイルの重複インクルードがあるのではないでしょうか? 自作のヘッダファイルを、複数のソースファイルからインクルードしていませんか? もし、そうであれば、 ヘッダファイルに重複インクルード防止マクロを使えばいいかと。 下記のようにすればいいです。 #ifndef _HOGE_H #define _HOGE_H // ヘッダファイル全体を記述 #endif ただし、「_HOGE_H」の部分はヘッダファイル毎に変えること。
補足
説明が分かりにくくて申し訳ありません。 重複インクルード防止マクロというのは標準ヘッダを二つ使う場合、 #ifndef _HOGE_H #define _HOGE_H //新しい標準ヘッダを定義したプログラムを記述 #endif ということなのでしょうか? 私の質問の「1つのソースファイルに2つ以上のプログラムは作れないのでしょうか?」というのは、作業的に言うとソースファイルのフォルダに「プロジェクト」→「新しい項目の追加」で何も書かれていないプログラムを新しく開いて新しくプログラムを書くということですが。。。
お礼
勉強になりました。全部が対になっているんですね。 一時的に片方を選択的に選ぶことができたら便利だなぁと思っていました。 ご回答ありがとうございました。