C-编译器误差:控制达到非空隙函数的末端



我有此代码,并且编译器给我下一个错误:

functions.c:12:1:警告:控制达到非空隙函数的末端 [-wreturn-type] }

代码:

#include <stdlib.h>
#include <time.h>
int myrand(){
    srand(time(NULL));
    int r = rand()%2;
}

此功能是从另一个.c文件调用的:

printf("%d here n", myrand());

我在大量研究和通过手册进行阅读后发现了该错误,事实证明控制达到了非流动功能的末端。

int myrand(){
    srand(time(NULL));
    int r = rand()%2;
    return r; // add this
}

添加返回语句。

int myrand(){
    srand(time(NULL));
    int r = rand()%2;
    return r;
}

没有它,您打印的"随机"值不是来自rand(),而是来自省略返回语句的未定义行为。[嗯,从技术上讲,根据体系结构,可以在寄存器中传播rand的返回值]

虽然C标准可以允许不需要硬错误而省略它,但仍然不明智。

最新更新