Sono nuovo di C / C ++. Volevo sapere perché non possiamo dichiarare "extern C" per macro C ++ simile a metodi / funzioni ... che consentirà alle macro definite nel file C ++ di accedere ai file .c.
Grazie in anticipo
Le macro in C e C ++ sono un meccanismo di sostituzione del testo. Per questo motivo, non è possibile definire una macro in un file sorgente e utilizzarla in un file sorgente diverso.
Quello che puoi fare è definire una macro in un file di intestazione e includere quell'intestazione in entrambi i file sorgente C e C ++ in cui vuoi usare quella macro. Tale intestazione dovrebbe contenere solo il codice proveniente dal sottoinsieme comune di C e C ++, quindi sarà accettabile in entrambe le lingue.
In generale, non dovresti usare le macro in C ++. Il motivo principale è che le macro non rispettano l'ambito. Semplicemente rilasciano una porzione di codice nel mezzo del file sorgente. Questo può causare tutti i tipi di bug, che saranno molto difficili da trovare, perché dovresti fare questo inserimento strutturale nella tua testa.
In C ++, se il costo di una chiamata di funzione è il collo di bottiglia delle prestazioni, dovresti utilizzare le funzioni inline
, che rispettano l'ambito, anziché le macro.
Se hai bisogno di condividere il codice tra C ++ e C, probabilmente dovresti scrivere una funzione C corretta e dichiararla come extern "C"
. Se devi essere in grado di chiamare il codice C ++ da C, dovresti scrivere su di esso una funzione wrapper C molto sottile.
IMHO, la cosa più semplice da fare è usare semplicemente C ++. L'unica ragione per usare C sarebbe se stai lavorando su una piattaforma embedded, che non ha un compilatore C ++.