我想知道是否有宏或標準方式(用於調試目的)自動打印函數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