macro + std::string + C++

  • такой вопрос во3ник сегодня, хотел сегодня 3аменить длинный фкт.вы3ов через макро...все получилос и работает, но есть одно НО...


    вот марко:

    Исходный код
    1. #define ptx(x) mmc::MMC::translate(std::string(x));


    вот фкт. куда макро "смотрит":

    Исходный код
    1. const static std::string translate(std::string txt);


    так вот если сделать так то получаю это:


    Исходный код
    1. 446 mpButton->setText(ptx("foo.const"));


    Исходный код
    1. ..n.cpp:446: error: expected ‘)’ before ‘;’ token
    2. ..n.cpp:446: error: expected primary-expression before ‘)’ token
    3. ..n.cpp:446: error: expected ‘;’ before ‘)’ token



    а если так то все компилится:

    Исходный код
    1. std::string foo;
    2. foo = ptx("foo.const");
    3. mpButton->setText(foo);


    в чем 3агвоздка?


    все входные и выходные параметры [std::string]