Товарищи
Есть вот такой вот код
#define STRING( val ) "##val"
int main()
{
std::cout << STRING(123) << std::endl;
}
Хочу шоб в консоль было выведено "123", однако выводит ##val. подскажите, как правильно сделать обрамление параметра макроса кавычками. Заранее признателен за ответы.
Здравствуйте, 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
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