[英]the main function in clang c99
在c99標准中,主要功能可以用兩種樣式定義:
int main(void)
要么
int main(int argc, char \* argv[])
但是我嘗試了(llvm 8 c99(-std = c99))
int main()/main()
並且沒有警告或錯誤。
如何理解c99中的main
定義。 在哪里可以找到clang main
功能的整個定義類型?
對於被忽略的情況,默認為int
類型。 並且對於函數返回類型也是如此。 函數args的void
類型等於該函數沒有參數。 空參數'()'表示未指定參數及其計數和類型。
由於歷史原因,大多數編譯器不會警告int main()
或僅警告main()
,因為那是main()在C標准化之前的主要方式。
GCC有一些警告選項可以檢測到它。
對於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]
llvm中有一個錯誤報告 ,g似乎已經解決了這一問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.