Вот в постах увидел такое явление:
#define __STR(x) #x
#define STR(x) __STR(x)
ну или в таком же духе.
Можете мне рассказать, зачем определять два макроса? Чем вариант
#define STR(x) #x
хуже.
thnx
Здравствуйте, BitField, Вы писали:
Если мне не изменяет память, то там вопрос был о том, как можно уже созданное
значние макроса преобразовать в строку... т.е. один #define уже есть в самой программе. если написать
#define HELLO HelloWorld
#define STR(x) #x
/* ... */
printf(STR(HELLO));
то требуемого значения не получим. На экране будет HELLO, вместо HelloWorld'a
On Sat, 30 Jul 2005 14:24:03 +0400, BitField <16909@users.rsdn.ru> wrote:
>
> Вот в постах увидел такое явление:
>
> >
> #define __STR(x) #x
> #define STR(x) __STR(x)
>
>
> ну или в таком же духе.
>
> Можете мне рассказать, зачем определять два макроса? Чем вариант
> > #define STR(x) #x
>
>
> хуже.
Второй вариант хуже тем, что он не работает.
--
Maxim YegorushkinPosted via RSDN NNTP Server 1.9
Здравствуйте, MaximE, Вы писали:
ME>Второй вариант хуже тем, что он не работает.
Не, второй вариант работает ( по крайней мере — на gcc 3.3 и 4.0), но не совсем так, как нужно.
Как заметил anvaka — макросы он раскрывать не умеет.
Но все равно спасибо, тем более, что, каюсь, первый вариант был из Вашего поста.
Просто свой вопрос я задал без привязки к конкретному сообщению.
Все, ответ ясен — два макроса для того, чтобы при передаче как параметра другого (третьего
) макроса тот раскрывался.
Спасибо
Здравствуйте, BitField, Вы писали:
BF>Вот в постах увидел такое явление:
BF>BF>
BF>#define __STR(x) #x
BF>#define STR(x) __STR(x)
BF>
BF>ну или в таком же духе.
BF>Можете мне рассказать, зачем определять два макроса? Чем вариант
BF>BF>#define STR(x) #x
BF>
здесьАвтор: Андрей Тарасевич
Дата: 27.04.03