靜態成員函數和extern「C」鏈接函數有什麼區別?例如,當在C++中使用「makecontext」時,我需要傳遞一個指向函數的指針。 Google建議使用extern「C」鏈接,因爲「makecontext」是C.但是我發現使用靜態作品也是如此。我只是幸運還是...static vs extern「C」/「C++」
class X {
public:
static void proxy(int i) {}
}
makecontext(..., (void (*)(void)) X::proxy, ...);
VS
extern "C" void proxy(int i) {}
makecontext(..., (void (*)(void)) proxy, ...);
編輯:你能告訴編譯器或體系結構,其中的靜態成員的版本不工作(和它不是在編譯器中的錯誤) ?
`我很抱歉,但我仍然不相信......什麼?標準比一些編譯器的巧合實現定義的行爲更具授權的事實? – 2017-03-12 17:23:20
這是一箇舊帖子(8年前今天)我的觀點是當時像恕我直言,如果每個現有的實施不同於標準,那麼也許你應該問是否是標準是錯誤的問題。我正在尋找無法運行的平臺示例。 – 2017-03-14 06:36:40
夠公平的。對於C或C++標準來說,包含所有現有編譯器忽略的意想不到的結果當然是前所未有的。這是我目前最喜歡的:http://stackoverflow.com/a/42335543/2757035但是在這種情況下,我認爲標準很清楚地說明它的含義,並且實現可能隨時改變它們的行爲,如果有的話有一些優勢。 – 2017-03-14 09:46:17