Препроцессор C++ проверяет, равен ли макрос двум двойным кавычкамC++

Программы на C++. Форум разработчиков
Anonymous
Препроцессор C++ проверяет, равен ли макрос двум двойным кавычкам

Сообщение Anonymous »

У меня возникла проблема с макросом, созданным на основе переменной среды в Platform.io:

Код: Выделить всё

-D SXM_VERSION=\"${sysenv.SXM_VERSION}\"
Как вы можете видеть, SXM_VERSION вынужден начинаться и заканчиваться буквально двойной кавычкой (кстати, именно такого поведения я и хочу!).
Но мне нужно обработать случай, когда системная переменная env var не была установлена ​​и поэтому SXM_VERSION буквально содержит "". Когда это произойдет, я хочу автоматически установить значение «0.0.0».
Это не сработало, поскольку SXM_VERSION всегда определен:

Код: Выделить всё

#ifndef SXM_VERSION
#define SXM_VERSION "0.0.0"
#endif
И все остальное, что я пробовал, я получаю выражение должно иметь целочисленный или перечисляемый типC/C++(847). Например:

Подробнее здесь: https://stackoverflow.com/questions/792 ... ble-quotes

Вернуться в «C++»