int a = 2;
int b = 3;
// ...
PRINT1(a, b, ...);
PRINT2(a, b, ...);
其中PRINT1
應擴展爲:
std::cout << "a = " << a << ", b = " << b << ... << std::endl;
// note: in "a = ...", "a" is the name of the variable, i.e.:
// PRINT(bar, ...) should print "bar = ..."
和PRINT2
應擴大到(使用cppformat):
fmt::print("a = {}, b = {}, ...", a, b, ...);
現在我正在使用Boost.PP並且必須寫入PRINT((a)(b)(c)...)
來實現類似於第一種場景的東西,但是如果我可以使用逗號代替它會更好。其中一個問題的解決方案可能很容易適用於解決這兩個問題。
因此,您基本上需要一個函數,該函數會接收未定義類型的變量的未定義數量,並使其打印出變量的內容以及它們的標識符名稱? 你能詳細說一下爲什麼?這聽起來像任何人都不應該真的想做的事。 – Mercious 2015-03-25 11:56:52
@Mercious debug_print(foo,bar,baz,a,b,c);將打印到任何你已經配置了每個變量的名稱和值的地方。調試時非常有用,尤其是在調試優化版本時,無需調試信息即可構建,分佈式系統無法在每個進程中打開調試器會話(考慮10ks進程),......當然,您可以每次都寫出整個系列,但你爲什麼要?預處理器知道變量(#)的名稱,並且編譯器知道它的值。 – gnzlbg 2015-03-26 17:52:02