Я хочу отменить и переопределить макрос __cplusplus, однако получаю ошибку компиляции: __cplusplus was not declared in this scope
#define TEMP_VERSION __cplusplus // temporary macro to hold the __cplusplus containt
#undef __cplusplus
#define __cplusplus TEMP_VERSION // redefine __cplusplus
#define AA 111
#undef AA
#define AA 111
int main()
{
cout << "__cplusplus = "<<__cplusplus<<endl; // It doesn't work
cout << "AA = "<<AA<<endl; // It works
return 0;
}
- Вопрос 1: Почему он не работает с
__cplusplus
, но работает с AA
Я знаю, что это действительно ужасно, но причина, по которой я не определил макрос, заключается в том, что я использую Программное обеспечение сторонних производителей, где они не используют #ifdef __cplusplus
, я имею в виду содержание#ifdef __cplusplus ... #endif
неправильно.Поэтому вместо того, чтобы менять их программное обеспечение, я решил сделать следующее:
#define TEMP_VERSION __cplusplus
#undef __cplusplus
#include <third_party_sw.h>
#define __cplusplus TEMP_VERSION
- Вопрос 2: Как вы думаете, это хороший подход?