c - 如果没有头文件,如何调用像 time() 这样的 C 函数?

标签 c header-files forward-declaration function-declaration c-header

根据我检查过的文档,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> ,它工作正常,或者至少工作。这是怎么发生的?

最佳答案

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

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

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

关于c - 如果没有头文件,如何调用像 time() 这样的 C 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65488894/

相关文章:

c++ - 如何通过传递参数从 C++ 调用 R 函数

c++ - 如何使用我的头文件中某处声明的枚举?

我可以在 C 源文件中声明函数而不在头文件中声明它吗?

c - 在 C89 中转发声明 typedef 结构的更好方法?

c - 通过loadrunner处理批处理文件

c - 在学生数组中查找字段的最大数量

c++ - C++ 中带有头文件的错误

c++ - 在 C++11 中使用的前向声明

c++ - 如何转发声明 vector<B*>*(不是 vector<B> 或 vector<B*>)?

c - 指向结构的指针在 C 中返回不正确的值