我在 C 程式中包含的唯一庫是stdio.h
. 無論如何,在同一個程式中呼叫system()
仍然有效,盡管 Eclipse 抱怨一個implicit declaration of function ‘system’ [-Wimplicit-function-declaration]
,不管那是什么意思。
但是,GCC(我正在使用的編譯器)似乎很高興。是 Eclipse 會在編譯之前自動修復問題,還是 GCC 只是善意地做到這一點而不會抱怨?我對此一無所知。
我正在使用 GNU/Linux Debian 11 (Bullseye) Stable,如果這有什么不同的話。
uj5u.com熱心網友回復:
曾幾何時,C 語言的規則是,如果你呼叫了一個編譯器從未聽說過的函式,它會悄悄地假定它是一個普通函式,回傳int
.
該system()
功能符合該描述。
在最新版本的 C 標準中,“隱式int
”規則已被洗掉,您需要在呼叫所有函式之前宣告它們。如果您未能宣告被呼叫的函式,現代編譯器必須發出診斷。但是,沒有什么可以阻止編譯器將診斷作為非致命警告,并繼續編譯您的程式,利用舊的假設。事實上,許多編譯器仍然這樣做,也許是為了更容易編譯在舊規則下撰寫的舊代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/484238.html