... in C++我如何避免名稱混搭?
10
A
回答
23
你不能。它內置於編譯器中,可以讓你重載函數,並在不同的類和類似的東西中使用同名的函數。但是你可以編寫像C函數一樣的函數。這些可以從C代碼中調用。但是,這些不能超載,不能由「正常」 C++函數指針調用:
extern "C" void foo() {
}
上述功能將像C函數編譯器被截斷。這可能根本不包括名稱的變化,或者一些變化,比如前面的「_」。
7
你的意思是說你可以導出你的函數庫嗎? extern "c" {}
6
其他方式:
控制名稱中使用的彙編代碼(gcc spec.)
您可以指定名稱在彙編代碼可用於C函數或可變的寫作聲明者之後的asm(或__asm__)關鍵字。您應該確保您選擇的彙編程序名稱不與任何其他彙編程序符號或引用寄存器衝突。
爲函數指定的彙編名,寫出它的定義之前的函數的聲明,並把ASM那裏,就像這樣:
int func() asm ("MYFUNC");
int func()
{
g++
將編譯並nm -D
輸出將
0000000000001e02 T MYFUNC
,而不是
0000000000001e02 T _Z4funcv
測試對於g ++ 4.9.2
相關問題
- 1. 如何避免css類名稱的名稱衝突
- 2. 指定Proguard的類名稱以避免混淆
- 3. 如何避免混亂格式化?
- 4. MongoDB如何避免SQL注入混亂?
- 5. 架構名稱與表名 - 如何避免衝突?
- 6. 避免路徑名稱與批處理
- 7. 名稱空間避免衝突 - 例子?
- 8. 避免QML中的名稱衝突
- 9. 避免在python中輸入類名稱
- 10. SQL插入避免列名稱
- 11. 避免重寫變量名稱
- 12. 如何在名稱空間中生成soap4r wsdl2ruby類以避免名稱衝突?
- 13. EntityFramework(ORM)對象名稱和域模型名稱 - 如何避免重複?
- 14. Dexguard:避免串混淆
- 15. 避免重名
- 16. 如何在啓用混合時避免與背景混合
- 17. 如何避免Excel本地化對象名稱和破壞宏?
- 18. 如何避免在aspx頁面中重複名稱空間
- 19. 如何避免依賴項的Rake任務名稱衝突?
- 20. 如何避免與OpenMPI的名稱衝突?
- 21. 如何避免HQL,Hibernate中的硬編碼字段名稱?
- 22. 如何避免在Visual Studio下的名稱隱藏警告?
- 23. 如何避免通過名稱調用JavaScript方法eval()?
- 24. 如何避免在python中用空格拆分名稱
- 25. 如何避免BDD(生菜)名稱衝突
- 26. 如何避免名稱衝突組合對象
- 27. 如何避免Objective-C的方法名稱中使用「和」
- 28. Ninject如何避免多個名稱綁定
- 29. 如何驗證名稱字段以避免數字
- 30. Node.js,如何避免事件名稱空間衝突?
只是次要NIT:這樣的功能當然可以選自C被稱爲++函數指針:外部的 「C」 空隙FOO(){printf的( 「富\ n」); } int main(){ void(* f)(); f = foo; f(); } – 2009-02-07 23:03:43