[問題] compiler的問題..

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間16年前 (2010/06/07 19:22), 編輯推噓2(203)
留言5則, 5人參與, 最新討論串1/1
其實標題不太會下......主要是不太懂以下的問題 以下是簡單的測試小程式 main.cpp =========== extern "C"{ #include "Foo.cpp" } int main() { Foo(); return 0; } Foo.h =========== void Foo(); Foo.cpp =========== //extern "C"{ #include "Foo.cpp" } void Foo() { 實作 } 請教一下 遮掉那行 加和不加 在compiler的角度上有什麼差異嗎? 因為跟compiler那些link的原理完全不懂...... 就我自己測試 結果推測是 main.obj 要去link _foo時(因為是extern C版本的關係才要去找_Foo嗎????) 剛好如果Foo.cpp沒加那行的話 Foo.obj 紀錄的會是 _Foo_Void_之類的,......大家是稱做symbol嗎? 導致link不到.....?? 如果加了 compiler就會自動把 Foo.obj包含的symbol名稱就還是維持_Foo 結論 是compiler要build這cpp 發現他有宣告 就會依照宣告什麼把他寫定義的名字改成宣告的名字 沒寫就C++的mangling? 以上是推測.... 請指教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66

06/07 19:41, , 1F
對。但是我習慣定義前面也再打一次。
06/07 19:41, 1F

06/07 19:51, , 2F
extern "C"{ #include "Foo.cpp" } ←自己include自己?
06/07 19:51, 2F

06/07 19:53, , 3F
應該只是筆誤吧
06/07 19:53, 3F

06/07 20:03, , 4F
喔筆誤抱歉是.h@@
06/07 20:03, 4F

06/07 20:11, , 5F
薦書《程式設計師的基本修養》 有講linker、loader這些
06/07 20:11, 5F
文章代碼(AID): #1C3DPeRc (C_and_CPP)
文章代碼(AID): #1C3DPeRc (C_and_CPP)