のメイン機能、主な機能は、2つのスタイルで定義することができる。C99規格で打ち鳴らすのC99
int main(void)
又は
int main(int argc, char \* argv[])
しかし、私は(LLVM 8つのC99(-std = C99)試み)
int main()/main()
警告やエラーはありません。
c99でmain
の定義を理解する方法。そして、どこで定義されているのは、main
の定義型がどこにあるのでしょうか?
のメイン機能、主な機能は、2つのスタイルで定義することができる。C99規格で打ち鳴らすのC99
int main(void)
又は
int main(int argc, char \* argv[])
しかし、私は(LLVM 8つのC99(-std = C99)試み)
int main()/main()
警告やエラーはありません。
c99でmain
の定義を理解する方法。そして、どこで定義されているのは、main
の定義型がどこにあるのでしょうか?
省略された場合のデフォルトはint
です。関数の戻り値型についても。 funtion argsのタイプがvoid
の場合、その関数には引数がないという点で同じです。空のargs '()'は、引数とその数と型が指定されていないことを意味します。
により歴史的な理由に、ほとんどのコンパイラはint main()
またはちょうどmain()
のために警告しません - それは、GCCがそれを検出することができ、いくつかの警告オプションがあり、主にC.
の標準化前になっているかmain()のだから。 main()
については
:
$ gcc -Wall -Wextra -Wold-style-declaration -Wold-style-definition -Wstrict-prototypes -std=c99 test.c
test.c:4:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
main()
^~~~
test.c:4:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
test.c: In function ‘main’:
test.c:4:1: warning: old-style function definition [-Wold-style-definition]
とint main()
用:
$ gcc -Wall -Wextra -Wold-style-declaration -Wold-style-definition -Wstrict-prototypes -std=c99 test.c
test.c:4:5: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
int main()
^~~~
test.c: In function ‘main’:
test.c:4:5: warning: old-style function definition [-Wold-style-definition]
ごく最近、これを固定しているようだwhichg LLVMでbug reportがありました。
intはデフォルトよりも前のc99です。それ以降、デフォルトはありません。 – Deduplicator