看板 C_and_CPP 關於我們 聯絡資訊
我從書本的光碟載出來的範例程式原始碼 .c檔 直接點開範例原始檔之後發現裡面都沒有打標頭檔 就是 include <stdio.h> 這些 但是卻可以編譯跟執行? 然後很奇怪的事 我把整段原始碼複製貼到新開的原始碼檔上 然後就編譯錯誤了... 這是怎麼回事? 光碟中的原始檔有什麼機制嗎? 這是光碟中的不用標頭檔就可以編譯執行的原始碼 http://webhd.xuite.net/_oops/ilovemoya01/9r7 開發環境我是用Dev c++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.131.112
tinlans:你新開的原始檔是 C 還是 C++,副檔名是什麼? 04/09 08:58
james732:建議附上錯誤訊息 04/09 12:24
我剛剛發現錯誤是因為存成.cpp 我以為他會預設成.c檔...... 所以存成.c檔後就一樣可以編譯成功了 不過我現在問題變成 為啥不用打標頭檔阿? 像我可以只打出 main( ) { printf("測試123測試123"); system("PAUSE"); return 0; } 然後直接編譯 也可以執行 但是一般來講前面不是都要先打 #include <stdio.h>等等的東西嗎? ※ 編輯: sarsenwen 來自: 114.47.131.112 (04/09 13:33)
james732:常用的header file可能會由IDE自己加進來 04/09 14:09
james732:不過最好還是自己寫清楚 04/09 14:10
james732:在Linux底下用gcc也可以直接用printf而不用stdio 04/09 14:13
lausai:#19ildeDh 04/09 22:01
tinlans:有一種東西叫 built-in function,又叫 intrinsic。 04/10 02:25
tinlans:compiler 會在 front-end 裡就將那類函式呼叫展開成中間碼 04/10 02:25
tinlans:的形式,不會真正去 call 那個 symbol (function name), 04/10 02:26
tinlans:所以不需要特別去 link。就算不是這種類型,因為大部分 C 04/10 02:26
tinlans:compiler 預設就會去 link 標準 C 函式庫 (如 libc.so), 04/10 02:27
tinlans:所以還是有機會 link 成功,但是會警告你 type 不相容。 04/10 02:28
tinlans:推文很難講得面面俱到,懶得補漏洞了... 04/10 02:29