問題提問界面正在標記許多「可能已經有你的答案的問題」,但我試圖做盡職調查來檢查是否有人確切地詢問我在這裏。如果這是重複的,我很抱歉。隱式聲明警告:什麼是內置函數?
假設我有以下不正確的程序:
extern void undefined_function(void); int main(int argc, char **argv) { undefined_function(); undeclared_function(); exit(0); }
用gcc編譯給出:
$ gcc warnings.c warnings.c: In function ‘main’: warnings.c:6:2: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default] /tmp/ccVzjkvX.o: In function `main': warnings.c:(.text+0x15): undefined reference to `undefined_function' warnings.c:(.text+0x1f): undefined reference to `undeclared_function' collect2: ld returned 1 exit status $
我知道爲什麼這些警告被髮射,以及如何糾正他們 - 這不是我的問題。
從輸出,很顯然,GCC的治療exit()
不同其他未定義/未申報功能,因爲它認爲這是一個「內置函數」
對於一個給定的gcc,我怎麼能告訴gcc認爲是「內置函數」的函數列表是什麼? 它恰恰是c標準庫函數或其他東西的列表嗎?
我認爲做nm libc.so
,但在我的Ubuntu虛擬機,這似乎glibc的被剝離,所以沒有有用的信息有這方面的:
$ nm /lib/x86_64-linux-gnu/libc.so.6 nm: /lib/x86_64-linux-gnu/libc.so.6: no symbols $
你不應該對競爭性答案投票。 –
@AlecTeal - 爲什麼不? - 甚至有一枚徽章可以完全符合:http://stackoverflow.com/help/badges/805/sportsmanship –