Salve.
C'è una differenza tra #ifdef e #if defined? Posso usare entrambe le forme indistintamente?
Inoltre, perché molto spesso si una il seguente codice?
Grazie.codice:#ifdef __cplusplus extern "C" { #endif
Salve.
C'è una differenza tra #ifdef e #if defined? Posso usare entrambe le forme indistintamente?
Inoltre, perché molto spesso si una il seguente codice?
Grazie.codice:#ifdef __cplusplus extern "C" { #endif
#ifdef fa parte dello standard, #if defined no. Il vantaggio di #if defined è che puoi fare cose del tipo:
al posto di:codice:#if defined(PIPPO) && defined(PLUTO) // andiamo a topolinia #endif
ma in genere non è portabile.codice:#ifdef PIPPO #ifdef PLUTO // andiamo a topolinia #endif #endif
Il giochino del:
si applica ad header che possono essere inclusi sia in C che in C++. Praticamente quando e' incluso in un file C++ si dice al compilatore: hey guarda che quello che c'e' scritto nel blocco extern "C" deve essere capito anche da un eventuale includente in C.codice:#ifdef __cplusplus extern "C" { #endif
Buono a sapersi. Grazie.
Avrei bisogno solo di un ultimo chiarimento: le parole chiavi extern dichiarazione_variabile; ed extern "C" sono la stessa cosa? Perché se "extern" comunica al compilatore di eseguire un collegamento esterno, allora non capisco come sia possibile che extern "C" faccia in modo che si abbia compatibilità piena sia col C che col C++. Non sò se mi sono fatto capire...
Buona notte e ancora grazie.
evidentemente no.Originariamente inviato da xshell
Buono a sapersi. Grazie.
Avrei bisogno solo di un ultimo chiarimento: le parole chiavi extern dichiarazione_variabile; ed extern "C" sono la stessa cosa?