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

一つのプロジェクトファイルにmain関数は通常一つだけなのですが、
複数のmain関数を共存させたり、他の.cppにあるmain関数を呼び出したり
することは可能でしょうか?

なんか説明が分かりにくくて申し訳ないですが、ふとそんなことができるのかな
、と思って質問してみました。

想定される環境はVisual Studio2005でお願いします。

A 回答 (2件)

C++の場合は、mainを呼び出したり、mainへのポインタを取得することができません。


しかし、Cであれば可能です。

mainを呼び出す必要がある部分をCで実装するか、

int call_main(int argc, char *argv[])
{
 return main(argc, argc);
}

のような関数だけCで作っておいて、あとはこれを使うようにすることで実現可能です。

複数のmain関数を共存させることはできません。
ただし、#if等で、Debug版とRelease版(あるいはそれ以外)では異なるmainを使うといったことであれば可能です。
    • good
    • 1
この回答へのお礼

なるほど。#ifdefやCなら確かにそういうやり方も出来ますね。
参考になりました。ありがとうございます。

お礼日時:2007/11/18 07:24

規格上、いわゆるメイン関数(グローバルのmain関数)は、


呼び出してはいけない決まりですので、まず呼び出せません。

また、グローバルなmainをオーバーロードすることは
違反ですし、同名のmainを複数定義すれば、
単一定義則違反でリンクエラーになりますから、
複数をひとつのプログラムにまとめることはできません。

そして、staticなmainも禁止されますので、
そういうこともできません(まぁ外部リンケージないので、
外から呼べませんが>static)

ということで、mainという名前の関数を共存させるとしたら、
「別のnamespaceに入れる」しか手がありませんが、
別のnamespaceにあるmainは、単なるmainという名前の
普通の関数に過ぎず、いわゆるmainとしては動作しませんので、
おそらく質問の趣旨とは違うものになっていると思います。
    • good
    • 0
この回答へのお礼

なるほど・・できないんですね。ありがとうございました。

お礼日時:2007/11/18 07:23

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