アプリ版:「スタンプのみでお礼する」機能のリリースについて

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に触れましたが、今後長く使いたいので別の環境に逃げずいろいろ勉強したいと思っています。
もし何かお心当たりがありましたら、ぜひ教えてください。
宜しくお願い致します。

A 回答 (3件)

    • good
    • 0
この回答へのお礼

Cでのコンパイル法!!ありがとうございました!
こちらに質問を投稿して、本当によかったです。
回答くださいまして、またこのように派生の情報までくださいまして
ありがとうございました。

お礼日時:2010/08/05 21:56

あ、見当外れの回答をしてしまったようです。


すみません。

main関数の重複はだめですので
2つめは名前を変えて(たとえば subとか)

void sub()
{

}

void main()
{
sub();
}

くらいでしょうか。
    • good
    • 0
この回答へのお礼

ichhabehunger様

本当に、何度もありがとうございました。
後追いでいただいたこちらのコメントもとても助かりました。

お礼日時:2010/08/05 21:55

たとえば



// 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を実行
といった具合にしてはいかがでしょう
    • good
    • 0
この回答へのお礼

申し訳ありません、PCの不調でお礼が遅くなりました。
いただいたサンプルを参考に、書いてみたところうまく行きました!
丁寧にコードを記述くださいまして、ありがとうございました。
大変助かりました。

お礼日時:2010/08/05 21:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!