精華區beta CSSE 關於我們 聯絡資訊
※ 引述《ikjhyu (還沒想到)》之銘言: : ※ 引述《kaikaii (kai)》之銘言: : : 我剛剛看過了stdio.h stdlib.h 裡都沒有include 其他.h檔 : : 又看了VRC那個資料夾中 printf.c的實作 : : 我想他應該透過某個方法去連結到VRC中的 .c檔 (stdio.h只是個介面 ?) : : 因為VRC 這個資料夾的名字不能被變動 : : #include <x.h> 不就是將x.h裡的內容 copy 到目前的程式裡 : : 所以既然將x.h的內容都copy 到了程式中 : : 那將#include<x.h> 去掉 當然還是能執行 (不拿掉當然可以執行) : : 以上是個人拙見 ^^" : 本來是覺得 : 是不是include 了某些檔(如stdio.h) 在編譯的時候, : compiler會自動的知道要去呼叫哪些檔案 : 特別是被include檔 (ex:stdio.h)裡面定義的 : 一些原型函式的具體程式檔案 (ex: printf.c) : 所以就把他改成是把stdio.h的內容貼到程式裡面 再把include<stdio.h>敘述拿掉 : 然後執行看看 結果也可以執行 : 所以應該不是compiler 自己會去找什麼檔案來連結 : 而是在stdio.h裡面的一些程式碼會告訴compiler : 該去連結什麼檔案 : 問題是裡面的程式碼怎麼都看不出有什麼連結的訊息 : 而且好像沒有"include"之類的敘述... : 有點怪.. : 如果一般使用者只寫函式原型檔(.h) 而沒有include 函式具體程式檔(.c) : 應該是不能執行的吧 抱歉上面的"compiler" 應該全部改為 linker -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.211.123 推 bxxl:linker會去指定的object files跟library 裡面找, 59.120.57.250 06/26 → bxxl:printf屬於標準函式庫,在library裡面 59.120.57.250 06/26 → bxxl:通常你看不到它的source code. 59.120.57.250 06/26 推 bxxl:還有自己寫的程式一般也不會去include .c檔, 59.120.57.250 06/26 b大俠你好 發現只要把函式具體內容檔(.c檔) 放到 C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\crt\src裡 而完全不用任何include信息 最多只要有include 原型檔(.h) 執行後發現自己就會找到了 原來如此... 有點瞭解 不過不是很好解釋... 至於那個include .c檔 是因為有種coding style說通常把函式的原型宣告放.h 具體內容放.cpp or .c 而其實打開 stdio.h 之類的檔案 也都是只有函式原型宣告而以說... 具體內容好像都沒放在.h , 好像是放在.c (當然,要放.h也是可以) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.211.123 ※ 編輯: ikjhyu 來自: 61.59.211.123 (06/27 01:09)