Может ли кто-нибудь здесь помочь мне понять, почему я вижу следующую ошибку, а не ошибку GATEWAY? Спасибо.
root@GATEWAY-0x0000001E:~/gateway/experiments# cat compile_define.cpp
#define DEVICE_TYPE GATEWAY
#if DEVICE_TYPE == NODE
#error "NODE"
#elif DEVICE_TYPE == GATEWAY
#error "GATEWAY"
#endif
root@GATEWAY-0x0000001E:~/gateway/experiments# g++ compile_define.cpp -o compile_define.o
compile_define.cpp:4:6: error: #error "NODE"
4 | #error "NODE"
| ^~~~~
root@GATEWAY-0x0000001E:~/gateway/experiments# g++ --version
g++ (Ubuntu 13.2.0-4ubuntu3) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
root@GATEWAY-0x0000001E:~/gateway/experiments#
Связанный: stackoverflow.com/questions/5085392/… Хотя эти связанные вопросы и ответы предназначены для C, я понимаю, что требуемый эффект в C++ такой же (но не уверен навскидку, если это через ссылку на стандарт C или соответствующие положения). в стандарте C++).





Исправлено с помощью:
#define DEVICE_TYPE_GATEWAY 0
#define DEVICE_TYPE_NODE 1
#define DEVICE_TYPE DEVICE_TYPE_GATEWAY
#if DEVICE_TYPE == DEVICE_TYPE_NODE
#error "NODE"
#elif DEVICE_TYPE == DEVICE_TYPE_GATEWAY
#error "GATEWAY"
#endif
Спасибо 273k за ответ.
Ни GATEWAY, ни NODE не определены. DEVICE_TYPE не получает ни одного. Ни один не равен ничему.