首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clang c99中的main函数

clang c99中的main函数
EN

Stack Overflow用户
提问于 2017-01-21 17:11:42
回答 2查看 749关注 0票数 0

在c99标准中,main函数可以定义为两种样式:

代码语言:javascript
复制
int main(void)

代码语言:javascript
复制
int main(int argc, char \* argv[])

但我试过了(llvm 8 c99(-std=c99))

代码语言:javascript
复制
int main()/main()

并且没有警告或错误。

如何理解c99中的main定义。在clang中,哪里可以找到main函数的完整定义类型?

EN

回答 2

Stack Overflow用户

发布于 2017-01-21 17:16:14

对于省略它的情况,默认情况下是int类型。对于函数返回类型也是如此。函数参数的void类型等于没有参数的函数。空参数'()‘表示未指定参数及其计数和类型。

票数 1
EN

Stack Overflow用户

发布于 2017-01-23 18:46:13

由于历史原因,大多数编译器不会警告int main()或只警告main() --因为在C语言标准化之前,main()大部分都是这样的。

GCC有一些可以检测到它的警告选项。

对于main()

代码语言:javascript
复制
$ 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()

代码语言:javascript
复制
$ 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中有一个bug report,它最近似乎修复了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41777574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档