extern C裡面能有C++代碼嗎?
01-25
有個疑惑,我在函數外麵包了extern「C」,函數裡面包含有c++的類,那那些類是按什麼編譯的?
照理包起來的不應該都按C編譯嗎?可是我裡面有C++的類,但是沒有報錯。如何在c++裡面寫給c庫回調的函數?c庫的函數的參數入口是一個結構體,幾個成員和一個函數指針。我應該如何寫?
工作需要我要在c++里寫個函數給c庫回調,我對c++不是很熟,特此提問。背景:php調用c庫,然後又要給c一個回調函數,由於c和php之間無法直接調用,所以我中間用一個第三方的php-cpp庫來作為二者的銜接,在c++調php函數的外面又包了一層,給c回調。
extern "C"
將讓 C++ 中的函數名具備 C-linkage 性質,目的是讓 C 代碼在調用這個函數時,能正確的鏈接到具體的地址。
函數的具體定義無關緊要,仍舊使用 C++ 編譯
------------- 額外的廢話
C++ 中函數有重載,使用函數名 + 參數信息作為鏈接時的唯一 ID。
C 中函數沒有重載,只使用函數名作為鏈接時的唯一 ID。
------------- 要看標準,要看更多細節
Language linkageen.cppreference.comStandard C++isocpp.org可以,但你不要在裡面拋異常不 catch 什麼的,因為 C 裡面沒法處理 C++ 異常。
能,但是裡面定義的函數不支持重載
推薦閱讀:
※該如何設計實現一個telnet bbs?
※C++ 中對 main 函數的地址賦值會怎樣?
※關於2048局面的價值判斷及ai思路?
※為什麼5%的CPU佔用會造成這麼大的性能損失?
※為什麼工控還在用c?