Препроцессор 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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