タグ

2018年10月13日のブックマーク (1件)

  • C言語(C11)で`main`の定義方法は何が一番正しいのか?

    【注意】下記はC言語での話であって、C++言語の話ではありません。混同しないように! 仕様書を確認する C11仕様書最終ドラフトn1570には int main(void) { /* ... */ } int main(int argc, char *argv[]) { /* ... */ } の二つだけしか書いていません。また、char *argv[]の部分はchar **argvとしてもよいと備考に書かれています。なお、argcとargvは別の名前でもかまいません。ただし、これ以外を禁止しているのでは無く、実装定義の方法でもよいと書いてあります。 では、どうすべきでしょうか?OSやコンパイラによっていちいちmainの書き方を変えるのは、移植性を低くし、不具合の温床とのなります。よって、上の三種類以外は使用すべきではありません。上の三つが正常に動作しないようなコンパイラは消費期限が切れて

    C言語(C11)で`main`の定義方法は何が一番正しいのか?
    incep
    incep 2018/10/13
    "a()関数にパラメーターを色々渡していますが、エラーになりません。もしint a(void)としていた場合は、a(1)のところでエラーになってしまいます。つまり、()はどんな引数でもかまわないという意味になります。" 謎仕様