Próbuję znaleźć wszystkie miejsca, w których #include
jest umieszczony w bloku extern
C. Czy można to sprawdzić za pomocą preprocesora? Chciałbym dodać coś nie tak z moimi plikami nagłówka:Jak wykryć, że na zewnątrz działa "C"
#ifdef EXTERN_C_IS_IN_EFFECT
#error File included from extern "C" block!
#endif
Ja również poszukuje innych sposobów Kompilacja W takim przypadku, na przykład użyj jakiegoś specjalnego atrybutu. Używam gcc 4.4.7.
I zdefiniowano następujące makro, a następnie używać go w każdym nagłówku, który potrzebuje ochrony przed włączeniem w extern
C bloku:
#define ASSERT_NO_EXTERN_C void assert_no_extern_c(int); void assert_no_extern_c(double);
'extern' nie jest w ogóle zauważany przez preprocesor. –
Jeśli potrzebujesz tego do znalezienia wszystkich plików, w których masz zewnętrzny blok "C", możesz wziąć swój projekt kodu ze wszystkimi plikami, które chcesz przeszukać do swojego ulubionego IDE i zrobić "Szukaj w całym projekcie/rozwiązaniu/..." – Incubbus
@ πάνταῥεῖ Hm. '#define extern static'? –