Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di xshell
    Registrato dal
    Apr 2008
    Messaggi
    157

    Compilazione condizionata (#ifdef e #if defined)

    Salve.

    C'è una differenza tra #ifdef e #if defined? Posso usare entrambe le forme indistintamente?

    Inoltre, perché molto spesso si una il seguente codice?

    codice:
    #ifdef __cplusplus
    extern "C" {
    #endif
    Grazie.

  2. #2
    #ifdef fa parte dello standard, #if defined no. Il vantaggio di #if defined è che puoi fare cose del tipo:
    codice:
    #if defined(PIPPO) && defined(PLUTO)
    // andiamo a topolinia
    #endif
    al posto di:
    codice:
    #ifdef PIPPO
    #ifdef PLUTO
    // andiamo a topolinia
    #endif
    #endif
    ma in genere non è portabile.

    Il giochino del:
    codice:
    #ifdef __cplusplus
    extern "C" {
    #endif
    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.

  3. #3

  4. #4
    Utente di HTML.it L'avatar di xshell
    Registrato dal
    Apr 2008
    Messaggi
    157
    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.

  5. #5
    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?
    evidentemente no.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.