我尝试过atexit()
的基本实现。虽然返回类型main()
是int
,但编译器在执行时不会返回任何错误,而不返回main
中的任何值。
#include <stdio.h>
#include <stdlib.h>
void my_exit1(void);
void my_exit2(void);
int main(void)
{
if (atexit(my_exit2) != 0)
printf("can't register my_exit2");
if (atexit(my_exit1) != 0)
printf("can't register my_exit1");
printf("starting main\n");
printf("main is done\n");
//return(0);
//exit(0);
}
void my_exit1(void)
{
printf("first exit handler\n");
}
void my_exit2(void)
{
printf("second exit handler\n");
}
输出:
starting main
main is done
first exit handler
second exit handler
答案 0 :(得分:0)
在当前的C版本中,int main()
可以不带返回值,此时默认返回0
。对于C99计划也是如此。
是否应该省略返回0是值得商榷的。有效的C程序主要签名的范围要大得多。