[問題] 範例程式碼不用標頭檔卻可以執行?

看板C_and_CPP作者 (超囧學生 衝阿!)時間14年前 (2010/04/09 06:16), 編輯推噓1(1012)
留言13則, 3人參與, 最新討論串1/1
我從書本的光碟載出來的範例程式原始碼 .c檔 直接點開範例原始檔之後發現裡面都沒有打標頭檔 就是 include <stdio.h> 這些 但是卻可以編譯跟執行? 然後很奇怪的事 我把整段原始碼複製貼到新開的原始碼檔上 然後就編譯錯誤了... 這是怎麼回事? 光碟中的原始檔有什麼機制嗎? 這是光碟中的不用標頭檔就可以編譯執行的原始碼 http://webhd.xuite.net/_oops/ilovemoya01/9r7 開發環境我是用Dev c++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.131.112

04/09 08:58, , 1F
你新開的原始檔是 C 還是 C++,副檔名是什麼?
04/09 08:58, 1F

04/09 12:24, , 2F
建議附上錯誤訊息
04/09 12:24, 2F
我剛剛發現錯誤是因為存成.cpp 我以為他會預設成.c檔...... 所以存成.c檔後就一樣可以編譯成功了 不過我現在問題變成 為啥不用打標頭檔阿? 像我可以只打出 main( ) { printf("測試123測試123"); system("PAUSE"); return 0; } 然後直接編譯 也可以執行 但是一般來講前面不是都要先打 #include <stdio.h>等等的東西嗎? ※ 編輯: sarsenwen 來自: 114.47.131.112 (04/09 13:33)

04/09 14:09, , 3F
常用的header file可能會由IDE自己加進來
04/09 14:09, 3F

04/09 14:10, , 4F
不過最好還是自己寫清楚
04/09 14:10, 4F

04/09 14:13, , 5F
在Linux底下用gcc也可以直接用printf而不用stdio
04/09 14:13, 5F

04/09 22:01, , 6F
04/09 22:01, 6F

04/10 02:25, , 7F
有一種東西叫 built-in function,又叫 intrinsic。
04/10 02:25, 7F

04/10 02:25, , 8F
compiler 會在 front-end 裡就將那類函式呼叫展開成中間碼
04/10 02:25, 8F

04/10 02:26, , 9F
的形式,不會真正去 call 那個 symbol (function name),
04/10 02:26, 9F

04/10 02:26, , 10F
所以不需要特別去 link。就算不是這種類型,因為大部分 C
04/10 02:26, 10F

04/10 02:27, , 11F
compiler 預設就會去 link 標準 C 函式庫 (如 libc.so),
04/10 02:27, 11F

04/10 02:28, , 12F
所以還是有機會 link 成功,但是會警告你 type 不相容。
04/10 02:28, 12F

04/10 02:29, , 13F
推文很難講得面面俱到,懶得補漏洞了...
04/10 02:29, 13F
文章代碼(AID): #1BlbMo_Z (C_and_CPP)