繁体   English   中英

为什么在 C 中 main() 之前没有数据类型(例如 void、int、char),就像在其他语言中一样?

[英]Why does main() have no data type (such as void, int, char) before it in C, as it does in other languages?

在我见过的每个 C 程序中,都会有 main() 函数。 与其他语言(例如 Java 和 C++)不同,它之前没有数据类型。 在 C++ 和 Java 中,main() 至少会有一个 void,如果不是其他一些数据类型。

为什么 main() 在 C 中没有数据类型?

此外,在 Java 中,构造函数没有与它一起使用的数据类型。 如果在函数之前没有使用数据类型,是否可以返回任何值? 或者默认情况下,它们可以返回任何值吗?

它是用户定义的:您在每个程序中定义它。 如果它是一个库函数,你就不会定义它,因为库会为你定义它。

(作为一个例外,Unix 库libllibyLexYacc的支持库,实际上定义了main ;这个想法是你用标准名称定义一堆函数,然后你得到一个调用这些函数的默认main 。不过,您可以覆盖它们的main 。显然 Windows 编译器做了类似的事情。)

main()是用户定义的函数。

标准明确指出它是一个用户定义的函数:

C11:5.1.2.2.1 程序启动

程序启动时调用的函数名为main 实现声明没有此函数的原型。 它应定义为返回类型为int且不带参数的:....

main()始终是用户定义的,并且可以通过多种方式进行原型设计(尽管有些人会争论这一点)

(已编辑)

main(void){/*User defined content*/} // K&R implied `int` return type
void main(void){/*User defined content*/}  //yeah, yeah, I know
int main(void){/*User defined content*/ return 0;} //commonly used 
int main(int argc, char *argv[]){/*User defined content*/ return 0;} //commonly used 

我使用 C 编译器的 C99实现 虽然它很明确的任何警告或错误的非法或恶意语法的通知,也没有标志时,以下情形:

在此处输入图片说明

因此,虽然它不严格遵守,但显然违法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM