main関数の書き方

C言語やC++の参考書を見ても分かります通り
main関数は様々な書かれ方をしていますね。

例えば次のような書き方を目にします。

main()
void main(void)
int main()
int main(void)
int main(int, char**)
int main(int, char*[])
int main(int argc, char **argv)
int main(int argc, char *argv[])
int main( int argc, char *argv[], char *envp[])

頼むから一つに統一してくれよって気分ですね(--;)

最近のC/C++言語関連の本では
int main()
int main(void)
と書かれていることが多いようですね。
一番シンプルだからという理由で採用されているのでしょう。

コマンドライン引数を指定する場合は以下のように書きます。
int main(int argc, char **argv)
int main(int argc, char *argv[])

基本的にどちらの書き方でも構いません。
配列へのポインタでもポインタへのポインタでも。

ちなみにenvpは環境変数やらを知りたい時に使います。
まぁ、環境変数を知ろうということ自体があまりないので
滅多に見かけない形だとは思いますが。

さて、我がPCinfoではこの書き方を採用しています。
int main(int, char**)

本当は引数加えて以下のように書いてもよいのですが、
int main(int argc, char **argv)

この書き方で、プログラム内でこれらの引数を使わずに
かつコンパイラの警告レベルを高く設定した場合、

「おい!引数が使われてねーよ!」

とコンパイラが文句を言ってくるので、コマンドライン引数
を使わない場合はargcやargvを抜いた書き方をしています。

結局どの書き方がいいのでしょうかね?

私はC/C++でのプログラミングはコマンドラインありきで
考えていますので、基本的にmain関数は
int main(int argc, char **argv)

コマンドラインを使わない時でも、
int main(int, char**)
(※int main(int, char*[])という書き方も見かけます)

としています。おそらくmain関数の書き方が一つに統一
されるとしたらこれであろうと勝手に考えてますんで(^^;)

C言語の入門本にあるような簡単な書き方でも全く構わない
と思いますが、main関数の戻り値にvoidを使うのはやめましょう。

main関数の戻り値はプログラムが正常に終了したことを
OSに伝える大切な値ですので(^_^;)
[PR]
by pcinfo | 2004-12-25 03:56