我在程序中有一些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?例如使用宏?
答案 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;
}