Re: [問題]C

看板Programming作者 ( )時間18年前 (2006/12/28 01:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《twisters121 (...)》之銘言: : 標題: [問題]C : 時間: Wed Dec 27 11:12:15 2006 : : 一個程式 a.exe, : : 程式如何知道print() function的實作在哪個library? : : 程式碼如下 : : #include <stdio.h> : : void main(void) : { : print("this is c language"); : } : : → final01:不是有include 140.134.35.48 12/27 14:33 : → newdominic:把第一行刪掉然後compile看錯誤訊息= = 203.68.127.1 12/27 17:17 因為 ptt 這邊轉信掛了 (不能轉出也沒轉入), 外面寄信進來也不見得會成功, 所以直接過來板上回。 1. 你在信中提到你用 Dev-C++ 的部分, 因為我沒有裝 Dev-C++, 所以沒有辦法幫你 try。 IDE 環境沒有 linker 選項的話, 那就得翻 IDE 手冊或 linker 手冊得知預設值。 要不就是 windows 上要有類似 UNIX 的 ldd 和 nm 工具, 但我從不在 windows 寫程式所以不知道。 如果是 UNIX / UNIX-like 上的 GCC, 你沒特別下 -static 指定靜態連結的話, 一般來說就是 libc.so (用 ldd 可以追到路徑), libc.so 通常是從 glibc 造出來的, 去抓 glibc 的 source code 就可以看到 source code。 2. 關於你這篇文,其實光看 C code 根本看不出來。 而且標準 C 沒有 print() 只有 printf(), 假設你說的是 printf() 好了, 推文裡面給你的答案也不會有任何幫助。 因為被實作在哪個 library 裡, 跟 compiler 完全無關, compiler 也不知道這件事, 這些全部都是 linker 的責任。 通常 linker 的預設值, 或是 compiler 預設會 pass 給 linker 的參數, 裡面就會有這些資訊, 就我所知 Dev-C++ 後端用的是 MingW32 (GCC 的一種), 所以這些預設值很可能跟 GCC 一樣直接編死在執行檔裡, 沒有類似 UNIX 的 strings 這種工具去剝出執行檔裡的字串的話, 也沒有類似 ldd 的東西的話, 那還是看不出來的。 3. 回推文的部分。 原 po 想知道的可能是 printf() 實際上放在哪個 .LIB 或 .DLL, 因為他用 mail 回文的時候是這個意思, 所以跟 include 或第一行沒有任何關係。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.216.58
文章代碼(AID): #15agR0uW (Programming)
討論串 (同標題文章)
本文引述了以下文章的的內容:
0
2
18年前, 12/27
完整討論串 (本文為第 2 之 2 篇):
18年前, 12/28
0
2
18年前, 12/27
文章代碼(AID): #15agR0uW (Programming)