看板 CSSE 關於我們 聯絡資訊
※ 引述《ikjhyu (還沒想到)》之銘言: : 最近在試一些c++的東西 : 發現一個奇怪的東西 : 如下面程式 : #include <stdio.h> : void main() : { : printf("abc\n"); : } : 程式要使用printf() 所以必須include stdio.h檔 : 而他會去呼叫printf.c : 但是打開 stdio.h檔 : 卻到處找不到他有include的敘述 : 裡面都是一些函式原型的宣告 : 而沒有真正的函式內容檔 : 請問有人知道為什麼這樣程式可以執行嗎? : 而且把stdio.h檔的內容貼到 : 程式裡面再把include敘述拿掉 : 也可以正常執行... : 有點奇怪... 因為 printf 那一行在 runtime 的時候是 jump 過去執行 所以 compiler 只需要知道 function 的 prototype 就可以進行推參數以及 抓 return value 的動作, 所以不需要 function definition. 只要看得到 prototype 即可. C++ 比較龜毛, 一定要看到 prototype 才行, C 好像不用. 懶的試驗了... 啪鞋 :) -- Wei ARM 模擬器 - ARMware 0.5.0 發佈 http://www.csie.ntu.edu.tw/~r88052/ARMware/tw/index.php -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.92.60.106