繁体   English   中英

在C中使用不带time.h的randomize()

[英]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.hio.hconio.h之一可能包含time.h (或其中的所有其他标头)。


1至少不是那里的那些,而且可能不会出现在您看似古老的图书馆中。 C11说threads.h应该包含time.h

<compiler with high warning level> yourcode.c说? 我的猜测是:

  • 非标准DOS专用标头之一( conio.hdos.hio.h ,...)都包含它,

  • 还是根本没有声明,即不包括声明,在这种情况下,编译器将默默地隐式地假定一个函数签名(特别是,它假定一个返回值int以及您第一次调用它的任何类型的参数)。

请注意,后一种情况是错误的,您应注意不要这样做 (因为这可能会导致程序调用未定义的行为)。 始终在启用所有警告的情况下进行编译,以便您可以查找此类错误。

当C编译器找不到函数的原型时,会假定它是返回int的函数。 如果您未更改默认设置,它还会打印警告功能。

所以。 在您的情况下,也许包括了time.h,但要注意,如果没有,它可能会引起很多问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM