2012-11-26 8 views

risposta

10
#ifdef __cplusplus 
#define restrict 
#endif 

dovrebbe farlo. restrict non è una parola chiave in C++, quindi #define non c'è niente di problematico lì.

Oppure, come suggerito Arne Mertz, meglio ancora, hanno

extern "C" { 
#define restrict 
// include C headers here 
#undef restrict 
} 

in cui si includono le intestazioni C nel C++ fonte.

+1

La definizione di 'restrict' to nothing è legale anche in C (poiché il preprocessore trasforma la sorgente prima che il compilatore C la veda), ma non sarebbe ciò che è inteso. –

+0

@AlexeyFeldgendler è per questo che è avvolto con '#ifdef __cplusplus' ... – SomeWittyUsername

+3

se si inserisce' # define' nel codice C++ prima di includere le intestazioni C (insieme con l'extern "C" {'di cui avrete bisogno), non avrai nemmeno bisogno di "# ifdef/# endif". Cerca di essere minimamente invasivo, cioè non modificare il tuo codice C perché qualcuno potrebbe provare a usare la lib in C++. Modificare invece il codice C++. –

Problemi correlati