Arduino系のマイコンでprintfをシリアルに出力するためのいいかげんなマクロ
static char print_buff[256]; // ←メモリが許すなら十分大きくとる #define printf(...) sprintf(print_buff, __VA_ARGS__), Serial.print(print_buff)
sprintf()とSerial.print()の区切りがなぜ ; でなく , かというと、下記のようなif文の書き方があった場合にエラーになるため。
if(hoge) printf("hoge"); else printf("piyo");
printf()の戻り値を受け取るような場合にはエラーになるが、そんなことは滅多にしないだろう。
また、見ての通りリエントラントではないので割り込みやマルチタスクで使う場合は要注意。あくまでもテキトーにコピペしたコードを動かすための、間に合わせの超いいかげんなマクロである。