Макрос и кавычки
От: Glоbus Украина  
Дата: 27.09.04 08:11
Оценка:
Товарищи
Есть вот такой вот код

#define STRING( val ) "##val"

int main()
{
    std::cout << STRING(123) << std::endl;
}


Хочу шоб в консоль было выведено "123", однако выводит ##val. подскажите, как правильно сделать обрамление параметра макроса кавычками. Заранее признателен за ответы.
Удачи тебе, браток!
Re: Макрос и кавычки
От: _nn_ www.nemerleweb.com
Дата: 27.09.04 08:15
Оценка:
Здравствуйте, Glоbus, Вы писали:

G>Товарищи

G>Есть вот такой вот код

G>
G>#define STRING( val ) "##val"

G>int main()
G>{
G>    std::cout << STRING(123) << std::endl;
G>}
G>


G>Хочу шоб в консоль было выведено "123", однако выводит ##val. подскажите, как правильно сделать обрамление параметра макроса кавычками. Заранее признателен за ответы.


Вот так:
#define STRING(val) #val
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Макрос и кавычки
От: Dmitry A. Sinyagin www.astawireless.com
Дата: 27.09.04 08:46
Оценка:
G>Хочу шоб в консоль было выведено "123", однако выводит ##val. подскажите, как правильно сделать обрамление параметра макроса кавычками. Заранее признателен за ответы.
вот так это решает boost.preprocessor


# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
#    define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_I(text)
# else
#    define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_OO((text))
#    define BOOST_PP_STRINGIZE_OO(par) BOOST_PP_STRINGIZE_I ## par
# endif
#
# define BOOST_PP_STRINGIZE_I(text) #text
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.