我想調試功能,宏是這樣的文字:使用符號的名稱作爲字符串中的#define功能的宏
int myVar = 5;
PRINTVAR(myVar); // macro
// which expands to something like...
print("myVar: ");
println(myVar);
基本上,我想用標識符作爲一個字符串字面以及變量。
當我想將大量變量轉儲到標準輸出時,我只是感到有點反覆自己。
我傻嘗試,這當然不起作用:
#define PRINT_VAR(x) Serial.print("x: "); Serial.println(x);
這可能嗎?
你應該非常謹慎地在宏中嵌入分號。你當然無法使用你在任何地方寫的東西。通常,在宏調用之後會有一個分號,所以擴展在一行中會有兩個分號。它不是直接的語法錯誤,因爲第二個分號表示空語句的結束。考慮使用'do {Serial.print(「x:」); Serial.println(X); } while(0)'成語,如果你必須使用分號。請注意,至少有一個答案通過使用逗號運算符來小心避免分號。 – 2012-03-25 04:21:06
@JonathanLeffler爲提示而歡呼!我注意到這些逗號,是有道理的。 – aaaidan 2012-03-25 04:35:39