#define PROP "qqq"#if defined PROP=="VALUE"
...
#endif
порождает ошибку препроцессора.
Выход из этой ситуации
#define PROP "qqq"const char* VAL = "VALUE";
#if defined PROP==VAL
...
#endif
Хотелось бы узнать можно ли каким-либо образом сравнивать строки с помощью препроцессора не делая дополнительных объявлений?
Re: #define и строки
От:
Аноним
Дата:
23.06.08 08:53
Оценка:
Здравствуйте, Dimaaan, Вы писали: D>Выражение типа D>
D>#define PROP "qqq"
D>#if defined PROP=="VALUE"
D>...
D>#endif
D>
D>порождает ошибку препроцессора. D>Выход из этой ситуации D>
D>#define PROP "qqq"
D>const char* VAL = "VALUE";
D>#if defined PROP==VAL
D>...
D>#endif
D>
D>Хотелось бы узнать можно ли каким-либо образом сравнивать строки с помощью препроцессора не делая дополнительных объявлений?
А самому посмотреть в MSDN описание директивы #if религия не позволяет?
Здравствуйте, Dimaaan, Вы писали:
D>порождает ошибку препроцессора. D>Выход из этой ситуации
Дык препроцессор он С-- а не С++ Вы еще в С поробуйте if(str="QQpp")
Здравствуйте, php-coder, Вы писали:
PC>Здравствуйте, Dimaaan, Вы писали:
D>>#define PROP "qqq" D>>#if PROP=="VALUE"
PC>Вот так надо.
А попробовать скомпилить?
Здравствуйте, Bell, Вы писали:
B>Здравствуйте, php-coder, Вы писали:
PC>>Погорячился. Строчку VALUE нужно тоже в #define отдельный вынести тогда, чтобы сработало.
Не только вынести, но и использовать Вы, видимо, поняли меня слишком буквально, впрочем я тоже мог бы изъясниться поподробнее:
B>Если так: B>
B>#define PROP "VALUE"
B>#define VAL "VALUE";
B>int n = 0;
B>#ifPROP==VAL
B>n = 1;
B>#endif
B>
Здравствуйте, php-coder, Вы писали:
PC>Не только вынести, но и использовать Вы, видимо, поняли меня слишком буквально, впрочем я тоже мог бы изъясниться поподробнее:
B>>Если так: B>>
B>>#define PROP "VALUE"
B>>#define VAL "VALUE";
B>>int n = 0;
B>>#ifPROP==VAL
B>>n = 1;
B>>#endif
B>>
PC>Вот так должно работать.
Да, я поторописля. Вот реация Комо на исправленный вариант:
"ComeauTest.c", line 5: error: expression must have integral or enum type
#if PROP==VAL
^
"ComeauTest.c", line 5: error: expression must have integral or enum type
#if PROP==VAL
Здравствуйте, Bell, Вы писали:
B>Да, я поторописля. Вот реация Комо на исправленный вариант:
Да, я тоже поторопился. То, как я полагал, что работает на практике не работает. Как сделать правильно не знаю. Полагаю, что лучше вообще так не делать