[英]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.