如何将C ++源代码片段放入字符串?

时间:2014-07-26 03:56:25

标签: c++ visual-c++

我在程序中有一些C ++代码片段。我需要在运行时输出它们,例如:

int foo()
{
    return 0;
}

void main()
{
    string s = "
    int foo()
    {
        return 0;
    }
    ";

    cout << "Code: " << s << endl;
    cout << "Return value: " << foo() << endl;
}

我只是不想手动将foo()代码复制到s中。如何自动将foo()的代码放入s?例如使用宏?

1 个答案:

答案 0 :(得分:2)

虽然这会使您的源变得丑陋,但您可以在宏中定义函数体,然后将其字符串化以进行打印。

#define FOO\
int foo()\
{\
    return 0;\
}

FOO

#define BASIC_STRINGIFY(x) #x
#define STRINGIFY(x) BASIC_STRINGIFY(x)

void main()
{
    string s = STRINGIFY(FOO);

    cout << "Code: " << s << endl;
    cout << "Return value: " << foo() << endl;
}