Forse non sono la comprensione delle differenze tra C e C++, ma quando e perché abbiamo bisogno di usareQuando utilizzare extern "C" in parole semplici?
extern "C" {
? Apparentemente è una "convenzione di linkage".
Ho letto brevemente e ho notato che tutti i file di intestazione .h inclusi in MSVS circondano il loro codice con esso. Che tipo di codice è esattamente "codice C" e NON "codice C++"? Pensavo che il C++ includesse tutto il codice C?
Suppongo che questo non sia il caso e che C++ sia diverso e che le funzioni/funzioni standard esistano nell'uno o nell'altro ma non entrambi (ad esempio: printf è C e cout è C++), ma che C++ è compatibile all'indietro anche se la dichiarazione "C" extern. È corretto?
La mia prossima domanda dipende dalla risposta al primo, ma lo chiederò comunque qui: Poiché i file di intestazione MSVS che sono scritti in C sono circondati da extern "C" {...}, quando mai devi usarlo tu stesso nel tuo codice? Se il tuo codice è C e stai provando a compilarlo in un compilatore C++, non dovrebbe funzionare senza problemi perché tutti i file h standard che includi avranno già la cosa "C" extern con il compilatore C++?
Devi utilizzare questo quando si compila in C++ ma si collega a librerie C già create o qualcosa del genere?
C++ NON è un superset di C. Esiste una C valida che non è C++ valida. –
@ Theatrus-- questo tipo di affermazione richiede un esempio. – mmr
theatrus: Ma anche quello non è sempre il caso? – Russel