我想知道是否有宏或标准方式(用于调试目的)自动打印函数f的参数值,就像__FUNCTION__
打印/显示函数签名?例如,如何自动打印输入C++函数参数值
void foo(int x, string y) {
cout << __FUNCTIION_ARGS__ << endl;
}
应显示x
,并y
值。
如果没有这样的魔法标准方式,是否可以编写一个宏/模板来做到这一点?
--Update--
每@ JXH的评论,如果有问题的函数内部打印是不可能的宏/模板,是可以自动去做就呼叫侧,喜欢的东西:
call(foo,x,y);
它打印每个参数值,并且表现与foo(x,y)
仿佛它是在每一个其他方面直接调用相同?如果某个值不可打印(例如指针,函数),则包装call
只能打印一个不透明的值,如<ptr>
或<noprint>
。
谢谢
P.S.我正在使用gcc,(并且在将来也会发出叮当声)。
总之,没有。像在过去的美好时代一样用手写字。 –
请注意'__PRETTY_FUNCTION__'不是标准的C++(我认为?),它是一个至少由* gcc *支持的preproosessor扩展,也是由* clang *我相信(但不同的输出?)。您可能想要指定您正在使用的编译器(编辑问题以添加标记)。 – hyde
@hyde谢谢。建议编辑。 – tinlyx