簡體   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