当main没有返回时没有报告错误

时间:2016-02-15 08:54:26

标签: c unix

我尝试过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

1 个答案:

答案 0 :(得分:0)

在当前的C版本中,int main()可以不带返回值,此时默认返回0。对于C99计划也是如此。

是否应该省略返回0是值得商榷的。有效的C程序主要签名的范围要大得多。