作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題[問題] compiler的問題..
時間Mon Jun 7 19:22:14 2010
其實標題不太會下......主要是不太懂以下的問題
以下是簡單的測試小程式
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
→ tinlans:對。但是我習慣定義前面也再打一次。 06/07 19:41
推 loveflames:extern "C"{ #include "Foo.cpp" } ←自己include自己? 06/07 19:51
推 Bencrie:應該只是筆誤吧 06/07 19:53
→ QQ29:喔筆誤抱歉是.h@@ 06/07 20:03
→ james732:薦書《程式設計師的基本修養》 有講linker、loader這些 06/07 20:11