ページ 11

一つのアプリにメイン関数を二つ

Posted: 2011年1月29日(土) 05:33
by あま
タイトル通りの質問なのですが、一つのアプリケーションに二つにmain関数を使うことはできないのでしょうか?
なんか馬鹿な質問で申し訳ないのです。
main関数というのは関数の中で一番最初に実行されるので二つあってはならないので
絶対に二つ使うことはできないと思うのですが、何かうまくすれば使えないかな?と思いまして・・・
プログラム中でmain関数を呼び出すことは(たしか)出来ますよね?
そう考えるとmain関数を二つ作るというのもできないこともないかな?と思ったのです。

たとえば、一番最初の起動時にはCUIのコンソールアプリで実行され、
そこでユーザーがこのままコンソールで処理を続けるのか、GUIのWindowsアプリに切り替えて処理するのかを
選べたりするのは作れないのでしょうか?
逆に最初にWinアプリを起動させ、コンソールに切り替えたりとか・・・
まぁコンソールよりWinアプリの方が使いやすいし便利なのですが、
処理はコンソールの方が早かったり、コンソールの方が好きだと言うユーザーもいると思うので、
どちらも使えるようにすれば便利かな?と思いました。

Re: 一つのアプリにメイン関数を二つ

Posted: 2011年1月29日(土) 07:55
by h2so5
あま さんが書きました:たとえば、一番最初の起動時にはCUIのコンソールアプリで実行され、
そこでユーザーがこのままコンソールで処理を続けるのか、GUIのWindowsアプリに切り替えて処理するのかを
選べたりするのは作れないのでしょうか?
そのようなアプリケーションを作るとしても、main関数の数とは関係がありません。
おそらく あま さんのやりたい事はこれでしょう。↓

http://www.f13g.com/%A5%D7%A5%ED%A5%B0% ... %BB%A4%EB/

Re: 一つのアプリにメイン関数を二つ

Posted: 2011年1月29日(土) 07:58
by box
>一つのアプリケーションに二つにmain関数を使うことはできないのでしょうか?

できません。
そういうコードを書いてコンパイルしてみれば、掲示板で質問するまでもなく、即座に体感できることでしょう。

>プログラム中でmain関数を呼び出すことは(たしか)出来ますよね?

これは、できます。
しかし、このことと、main関数が2個存在できるかどうかという話は、別物です。

>たとえば、一番最初の起動時にはCUIのコンソールアプリで実行され、
>そこでユーザーがこのままコンソールで処理を続けるのか、GUIのWindowsアプリに切り替えて処理するのかを
>選べたりするのは作れないのでしょうか?

コンソールアプリの実行ファイルとWindowsアプリの実行ファイルを別個に用意しておいて、
system関数か何かを使って呼び出し合う、っていう方法が使えるかもしれません。

Re: 一つのアプリにメイン関数を二つ

Posted: 2011年1月29日(土) 17:12
by みけCAT
あま さんが書きました:たとえば、一番最初の起動時にはCUIのコンソールアプリで実行され、
そこでユーザーがこのままコンソールで処理を続けるのか、GUIのWindowsアプリに切り替えて処理するのかを
選べたりするのは作れないのでしょうか?
簡単に作ってみました。
このサンプルはコンパイルできましたが、使う関数によってはUndefined Referenceといわれる可能性があります。
-mwindowsとやってしまうとコンソールが使えないので、一つずつライブラリをリンクする必要があるかもしれません。

Re: 一つのアプリにメイン関数を二つ

Posted: 2011年2月03日(木) 20:00
by あま
うわ~。返信遅れてしまって申し訳ないです・・・
仕事忙しくてなかなか手を付けられませんでした>_<

みけCATさんサンプルありがとうございます。
本来はGUIを起動したらコンソールを消したかったのですが
そこら辺はやはりコンソールがメインで動いてるので消えるわけないですね。
大体頭の中で整理できたのでこれを基に頑張ります。