Possible Duplicate:
How to check (via the preprocessor) if a C source file is being compiled as C++ codeCome si scrive un file di intestazione C che può essere utilizzato nei programmi C++?
che sto cercando di trovare una macro standard che metterà alla prova se un file di intestazione viene compilato come C o C++. Lo scopo di questo è che l'intestazione può essere inclusa dal codice C o C++ e deve comportarsi in modo leggermente diverso a seconda di quale. In particolare:
In C, ho bisogno che questo è il codice:
extern size_t insert (const char*);
In C++, ho bisogno di questo di essere il codice:
extern "C" size_t insert (const char*);
Inoltre, c'è un modo per evitare mettendo # ifdef intorno a ogni dichiarazione nell'intestazione?
Potrei essere di parte, ma direi che questa domanda ha a che fare anche con extern. Poiché non conoscevo la sintassi "extern {...}" in precedenza, la mia risposta selezionata è molto più utile di quella fornita nel duplicato proposto. Modificherò la domanda per mostrare questa differenza. – Collin
Ho lasciato un x-ref a questa domanda sul duplicato proposto. Potresti migliorare la distinzione tra i due con un titolo rivisto come "Come definire condizionalmente" extern "C" 'o semplicemente" extern "che rileva automaticamente il compilatore C o C++?" O qualcosa del genere lungo queste linee generali. –
@JonathanLeffler Ho modificato il titolo per riflettere ciò che (penso) viene realmente chiesto, come illustrato dall'esempio nel testo ... la ricerca di questo, tuttavia, ha rivelato un titolo duplicato: http://stackoverflow.com/ domande/8742534/incluso-c-header-in-c-file ... ma non duplicare il contenuto –