声明:本人知识有限,文章可能有误或不全面,望指正并讨论!
最简单的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其他头文件。
C++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码
将C语言梳理一下,分布在以下10个章节中:
Linux-C成长之路(十):其他高级议题