Visual Studio 2008でのC言語のサンプルコード実行について教えてください。
他のプログラミング言語の経験はありますが、C言語とVisual Studioの開発環境は初めてでつまずいています。
C言語で書かれたたくさんのサンプルコードを、
Visual Studioと、Visual Studio コマンドプロンプトでテストしたいのです。
「test」というソリューション(プロジェクト)の下に、「新しいクラス」を追加して、
サンプルコードをコピペして、順次デバックでテストしようとしたところ、
ひとつのプロジェクトの中でmainが重複してしまいエラーになります。
main重複でエラーは当たり前とはいえ、
サンプルコードごとにプロジェクトを作成するのは大げさすぎる気がすることと、
体裁にこだわらず、とにかくデバックで各コードが動くことを確認したいこと、
サンプルコードの書き出し(main関数)などを修正してサブクラスに書き直してデバックすれば
mainの重複とみなされず、手軽にVisual Studioでテストできるのではないかと
やり方を調べています。
2つ目以降を、サブクラスにすればmainの重複がなくなるでしょうか?
その場合、最初のmain関数
int main (int argc, char **argv)
をどう修正すればいいのでしょうか。
それとも、何か別のやり方で、Visual Studioで手軽にテストする方法があるでしょうか。
調べてみたのですが、具体策がわからず困っています。
今回初めてVisual Studioに触れましたが、今後長く使いたいので別の環境に逃げずいろいろ勉強したいと思っています。
もし何かお心当たりがありましたら、ぜひ教えてください。
宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
たとえば
// Sample1.cpp 1個目ファイル
class Class1
{
public:
Class1() { }
virtual ~Class1() { }
void funcA()
{
printf( "Hello\n" );
}
};
int main( int argc, char* argv[] )
{
Class1 objA;
objA.funcA();
}
// Sample2.cpp 2個目のファイル
class Class2
{
public:
Class2() { }
virtual ~Class2() { }
void funcB()
{
printf( "Good-Bye\n" );
}
};
int main( int argc, char* argv[] )
{
Class2 objB;
objB.funcB();
}
といった具合でしたら
// Sample12.cpp
class Class1
{
public:
Class1() { }
virtual ~Class1() { }
void funcA()
{
printf( "Hello\n" );
}
};
/* このmainはコメントアウトする
int main( int argc, char* argv[] )
{
Class1 objA;
objA.funcA();
}
*/
class Class2
{
public:
Class2() { }
virtual ~Class2() { }
void funcB()
{
printf( "Good-Bye\n" );
}
};
int main( int argc, char* argv[] )
{
// 起動時の引数により 実行対象を変更する
Class1 objA;
Class2 objB;
if ( strcmp(argv[1], "1") == 0 ) {
objA.funcA();
} else if ( strcmp( argv[1], "2" ) == 0 ) {
objB.funcB();
}
}
-----
sample12.exe 1 で Class1を実行、 sample12.exe 2 で Class2を実行
といった具合にしてはいかがでしょう
申し訳ありません、PCの不調でお礼が遅くなりました。
いただいたサンプルを参考に、書いてみたところうまく行きました!
丁寧にコードを記述くださいまして、ありがとうございました。
大変助かりました。
No.2
- 回答日時:
あ、見当外れの回答をしてしまったようです。
すみません。
main関数の重複はだめですので
2つめは名前を変えて(たとえば subとか)
void sub()
{
~
}
void main()
{
sub();
}
くらいでしょうか。
No.1
- 回答日時:
Cでのコンパイル法!!ありがとうございました!
こちらに質問を投稿して、本当によかったです。
回答くださいまして、またこのように派生の情報までくださいまして
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
long型の定数の末尾にLを付ける...
-
main.c:7:43: warning: implici...
-
visualstudio C# テキストボッ...
-
C++のfor文について
-
関数の実体定義にヘッダファイ...
-
DWORDの実際の型は何でしょうか
-
GCCで暗黙の型変換の警告を出し...
-
typedef enumの使い方を教えて...
-
64bit → 32bit型へのキャスト
-
C++ クラスをメンバにもつクラ...
-
0除算を判定したい
-
2重定義って??
-
DLLでLIBファイルが作成されない
-
void func( void )について
-
プログラムの中で別のmainを呼...
-
【#define】 defineで定義した...
-
C#について
-
C++ template operator T()
-
VB 関数
-
intとINTの違いは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
C++のfor文について
-
2重定義って??
-
long型の定数の末尾にLを付ける...
-
typedef enumの使い方を教えて...
-
main.c:7:43: warning: implici...
-
C++でboolにintの値を代入する...
-
構造体の要素すべてに対する四...
-
intとINTの違いは?
-
ハンドルされていない例外が発...
-
DDVによるメッセージの変更
-
変数の型を定義しなかった場合...
-
【#define】 defineで定義した...
-
C++ クラスをメンバにもつクラ...
-
構造体の宣言でエラーが出ます。
-
プログラムの中で別のmainを呼...
-
void func( void )について
-
エラー「invalid conversion fr...
-
関数の実体定義にヘッダファイ...
おすすめ情報