在C中,有的qsort()
兩個版本標準庫提供:重載分辨率和 「C++」 版本的qsort的()/ bsearch(
extern "C" void qsort(void* base, size_t nmemb, size_t size, int (*compar)(const void*, const void*));
extern "C++" void qsort(void* base, size_t nmemb, size_t size, int (*compar)(const void*, const void*));
bsearch()
是大約相同的。
我的問題是,當調用qsort()
時,重載分辨率如何工作?它是否會根據作爲最後一個參數傳遞的函數指針的鏈接類型(「C」或「C++」)自動鏈接到相應的函數?或者調用者需要用某種額外的語法顯式指定?
(我們剛剛放好的誘惑打電話std::sort
爲第二...)
我從來沒有看到extern「C++」,extern「C」請求C++編譯器使用C mangling。你在哪裏看到extern「C++」void qsort .... – mpromonet
@mpromonet:C++標準。 – goodbyeera
我不明白你的問題,但是也許在你的可執行文件(或庫)上運行nm會回答你的問題? – mpromonet