Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как в макросе передать параметр в строк. литерал?


Автор: ДокторТуамОсес 24.6.2009, 03:03
Как в макросе передать параметр в строковый литерал?

Код

#define f(s) "left##s##right"
 не работает.


Т.к. по команде 
Код

cout << f(my_string) << endl ;


выводится left##s##right

а я хотел, чтобы вывелось leftmy_stringright.

Т.е. операция конкатенации ('##') внутри строки почему-то не работает.

Что делать?



Автор: 586 24.6.2009, 03:47
Код
#include <iostream>

#define f(s) "left"##s##"right"

int main(int argc, char* argv[])
{
    std::cout << f("AAAA") << std::endl;
    std::cin.get();
    return 0;
}

Автор: ДокторТуамОсес 24.6.2009, 10:45
Спасибо. Тему можно закрыть

Автор: mes 24.6.2009, 11:07
Цитата(ДокторТуамОсес @  24.6.2009,  09:45 Найти цитируемый пост)
Спасибо. Тему можно закрыть

Для решенных тем  есть галочка(checkbox) при редактировании : "пометить тему решенной" 
 smile 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)