[問題] compiler的問題..
其實標題不太會下......主要是不太懂以下的問題
以下是簡單的測試小程式
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
06/07 19:51, 2F
推
06/07 19:53, , 3F
06/07 19:53, 3F
→
06/07 20:03, , 4F
06/07 20:03, 4F
→
06/07 20:11, , 5F
06/07 20:11, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章