Breve descrizione:Esclusione di intestazione?
Header.h
ha #include <stdbool.h>
che ha una macro per _Bool in c.
file.cpp
include Header.h
, ma poiché file.cpp
è C++, ha il bool come tipo nativo. Ora Lint si lamenta di un insieme di cose a causa di questo (ridichiarazione, metodi non esistenti ecc.). C'è un modo per impedire l'inclusione di <stdbool.h>
in file.cpp
senza toccare Header.h
?
Se la mia descrizione di un problema sembra ridicola, per favore butta pomodori a me :) Altrimenti, grazie per l'aiuto.
Edit: Ora pensando a questo nuovo: conoscere i concetti di base della compilazione e il collegamento Avrei dovuto capire che 'escluso' un po 'di intestazione nel file di downstream/intestazione suona divertente e non dovrebbe essere possibile senza cludges. Ma ancora, grazie per l'aiuto. Un altro piccolo mattone per la mia comprensione di questo.
Protesta con il rivenditore della tua biblioteca. 'stdbool.h' non dovrebbe definire' bool' e gli amici come macro in C++. Nel frattempo, '# undef'. –
Puoi modificare 'header.h'? Quindi basta aggiungere i controlli condizionali del preprocessore per '__cplusplus' prima di includere' '. E potresti voler dare un'occhiata a quel tuo linter, non sembra gestire molto bene il C++, o non fa molto bene la pre-elaborazione. –
@ T.C. non è così semplice, il C++ 98 non dice nulla su '' quindi i suoi effetti in C++ 98 non sono specificati. GCC '' definisce le macro per C++ 98, perché le ragioni. Ragioni schifosi. Almeno fa '#define bool bool' in C++, non' #define bool _Bool' che è attivamente dannoso. –