声明:本人知识有限,文章可能有误或不全面,望指正并讨论!
最简单的C语言程序,应该就是一个main函数,而main里什么也不做了。如下:
C文件main.c:
int main() { return 0; }
在 unix/linux下编译,后生成可执行程序main,并执行main:
# cc -Wall -o main main.c # ./main #
程序无输出。
这是一个最简单的C语言程序了,但虽然是最简单,也有值得注意的地方。
为什么会是main函数?
因为main函数是链接生成可执行程序的入口,即程序的代码运行的入口。这是被定义的。而main函数的原型可以有三个:
int main(); int main(int argc, char *argv[]); int main(int argc, char **argv);
第一个main函数忽略命令行参数;
第二个main与第三个main是等价的,他们接受命令行参数。
一个可执行程序只有一个入口,那么正常情况下main函数也只能有一个。
但也有不正常的情况,那就是把main函数声明为static,但此时编译器会发出警告。这样声明的main函数就失去了作为程序入口的特性。而此时的static main函数不能和作为程序入口的main放在同一个文件,而需要把static main放到另一个C文件,从而使static main仅在文件内访问。
main函数只能有一个,那么main函数是不是只能执行一次。答案是否定的,main函数也是可以执行多次,只要代码中显示调用main函数,那么main函数也是可以执行的。如下面程序:
#include <stdio.h> int main(int argc, char *argv[]) { if (argc >0) { main(argc - 1, argv); printf("%s\n", argv[argc - 1]); } return 0; }
为什么没有include头文件?
因为最开始的main函数中,没有使用到一些编译或链接时所不知道的标识符,所以不需要include其他头文件。
本文出自 “chhquan” 博客,请务必保留此出处http://chhquan.blog.51cto.com/1346841/1568568
原文地址:http://chhquan.blog.51cto.com/1346841/1568568