[英]using randomize() without time.h in C
我能够运行使用randomize函数的代码,而无需包括time.h库。 它会自动包含在我可能已经包含在我的代码中的某些其他库中吗? 以下是我包含的库的列表:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <string.h>
#include <io.h>
这是非常特定于库的版本和实现的。 该标准不强制任何标头包含time.h
1,因此您不能依赖time.h
。
在您的情况下,例如dos.h
, io.h
, conio.h
之一可能包含time.h
(或其中的所有其他标头)。
1至少不是那里的那些,而且可能不会出现在您看似古老的图书馆中。 C11说threads.h
应该包含time.h
<compiler with high warning level> yourcode.c
说? 我的猜测是:
非标准DOS专用标头之一( conio.h
, dos.h
, io.h
,...)都包含它,
还是根本没有声明,即不包括声明,在这种情况下,编译器将默默地隐式地假定一个函数签名(特别是,它假定一个返回值int
以及您第一次调用它的任何类型的参数)。
请注意,后一种情况是错误的,您应注意不要这样做 (因为这可能会导致程序调用未定义的行为)。 始终在启用所有警告的情况下进行编译,以便您可以查找此类错误。
当C编译器找不到函数的原型时,会假定它是返回int的函数。 如果您未更改默认设置,它还会打印警告功能。
所以。 在您的情况下,也许包括了time.h,但要注意,如果没有,它可能会引起很多问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.