簡體   English   中英

lang c99的主要功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM