作者ikjhyu (還沒想到)
看板CSSE
標題Re: 請問c++ include標頭檔的問題
時間Mon Jun 27 01:06:12 2005
※ 引述《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)