Определена проверка директивы препроцессора C/C++ и строка не пуста

Я пытаюсь получить что-то вроде:

#if (!defined(SVN_REV) || (SVN_REV==""))
   char svnrev[10]="not found";
#else
   char svnrev[16]=SVN_REV;
#endif

для обработки случая, когда компилятор, не находя конкретную переменную окружения, устанавливает:

define SVN_REV ""

который для меня должен рассматриваться так же, как определение отсутствует.

Но кажется, что это невозможно, кто-нибудь нашел способ добиться результата?

1 ответ

Нет, препроцессор C не сравнивает строки.

Ты можешь сделать:

#if !defined SVN_REV
#define SVN_REV "not found"
#endif
const char *svnrev = SVN_REV;

Для достижения того же эффекта.

Другие вопросы по тегам