2017-06-20 10 views
5

मैंने विभिन्न गिटब मुद्दों को पढ़ने की कोशिश की है कि क्या अंतर है और यह उलझन में समाप्त हो गया है।जंग में बाहरी एफएन और बाहरी "सी" एफएन के बीच क्या अंतर है?

#[no_mangle] 
pub extern fn foo() { 
    ... 
} 

बनाम

#[no_mangle] 
pub extern "C" fn foo() { 
    ... 
} 

उत्तर

10

वहाँ कोई अंतर नहीं है, क्योंकि जैसा कि the reference का कहना है:

डिफ़ॉल्ट रूप से बाहरी ब्लॉक मान लेते हैं कि पुस्तकालय वे बुला रहे हैं पर मानक सी ABI का उपयोग करता है विशिष्ट मंच

extern "C" - यह extern fn foo(); जैसा ही है जो आपके सी कंपाइलर का डिफ़ॉल्ट रूप से समर्थन करता है।

एक issue हमेशा स्पष्ट रूप से extern "C" लेकिन RFC has been refused बताते हुए की आवश्यकता होती है करने के लिए बनाया गया था।

issuefmt-rfcs में "क्या हमें extern "C" fn प्रारूपित करना चाहिए या extern fn"?

संबंधित मुद्दे