現代で言う int main(int argc, char *argv[]) にほぼ相当する古い書き方ですが、表記が古いというだけではなく意味にも違いがあります。
古い書き方は「関数原型を含まない関数定義」です。 関数定義は関数の宣言を兼ねますが、古い書き方では「型情報の欠けた関数が宣言された」ものと見なされます。 実引数と仮引数の型が適合 (型の適合の概念はややこしいのでここでは省略します) しないときには未定義の挙動となります。 ただし、この関数を呼び出す箇所から見えるスコープに別途プロトタイプ宣言がある場合は別です。
正確な違いを整理した記事を見つけたので興味がある場合は読んでみてください。
https://qiita.com/yz2cm/items/2e3cc3ac3e3a64b654af
このあたりの理屈は歴史的経緯を引きずっていてややこしいので結論から言うとこれから書くプログラムで古い書き方を使う理由はありません。 常に新しい書き方で書いてください。 古い書き方だと関数の使い方が間違っていてもコンパイラが捕捉しないことがあります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/19 07:21