Я использую MACRO для определения переменной SUCESS
#ifdef SUCCESS
#undef SUCCESS
#define SUCCESS 0
#endif //SUCCESS
Но компилятор Eclipse дает мне ошибку, поскольку
symbol "SUCCESS" could not be resolved
Но если я просто напишу
#define SUCCESS 0
Он работает нормально. Почему это так. Мне нужно писать только с помощью #ifdef
Если SUCCESS
не задан перед этими предпроцессорными директивами, макроса SUCCESS
не будет определено (что ошибка). Если вы определяете SUCCESS
до этого, его значение изменится, как ожидалось:
#define SUCCESS 1
#ifdef SUCCESS
#undef SUCCESS
#define SUCCESS 0
#endif //SUCCESS
int main(int argc, char *argv[]) {
std::cout << SUCCESS;
return 0;
}
Как вы можете видеть здесь.
Перепишите это следующим образом:
#undef SUCCESS
#define SUCCESS 0
Таким образом, вы получите определение независимо от того, был ли ранее установлен SUCCESS
. Я также удалил оболочку #ifdef... #endif
. Это не нужно: #undef
игнорируется, если его цель не определена.