2

根据我检查的文档,在头文件time_t time(time_t *seconds)下声明。<time.h>然而,当我运行这段代码时:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    srand(time(NULL));
    printf("%d",rand());
    return 0;
}

不包括在内<time.h>,它可以正常工作,或者至少可以工作。这是怎么发生的?

4

1 回答 1

6

如果启用编译器警告,它不能正常工作。如果没有所需的标头,它会引发警告,例如

1347694184/source.c: In function ‘main’:
1347694184/source.c:7:11: warning: implicit declaration of function ‘time’ [-Wimplicit-function-declaration]
     srand(time(NULL));
           ^~~~

故事的寓意:始终使用正确的编译器设置来发出警告(如果可能,将警告视为错误)。注意警告,你会更安全。

于 2020-12-29T07:43:48.877 回答