Re: [問題] extern "C"的問題
看板C_and_CPP (C/C++)作者littleshan (我要加入劍道社!)時間16年前 (2009/06/10 15:48)推噓2(2推 0噓 0→)留言2則, 2人參與討論串5/5 (看更多)
※ 引述《littleshan (我要加入劍道社!)》之銘言:
推
06/10 15:22,
06/10 15:22
→
06/10 15:22,
06/10 15:22
我又必須為自己的衝動回文道歉了 XD
struct A;
struct B;
A* foo();
B* foo();
上述兩種版本的 foo() 具有相同的 function signature
所以它們無法 overload
上述的程式會發生 compile error
但 C++ 並未規定 name mangling 的方式
所以若是 compiler 讓 return type 也成為 name mangling 的一部份
也算是合理的做法
只要它能保證:
1. 參數型別不同的 function 具有不同的 symbol name
2. 宣告式完全吻合的 function 具有相同的 symbol name
3. 禁止具有相同 signature 的 function overloading
(這邊先不管 covariant return type)
VC 會把 return type 加入 name mangling 中
在 VC8 會把 FU* foo() 轉成 ?foo@@YAPAUFU@@XZ 的名稱
但 GCC 就不會包含 return type
FU* foo() 會變成 _Z3foov
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2
※ 編輯: littleshan 來自: 219.87.151.2 (06/10 15:49)
推
06/10 17:01, , 1F
06/10 17:01, 1F
推
06/15 21:53, , 2F
06/15 21:53, 2F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章