经常会用到C的格式化字符串,gcc/clang的扩展,都是可以进行字符串和可变参数的检测,不匹配,就会爆warning. 自己手写的,需要加上一点代码,否则不会进行检测. 1. 可变参数 void my_printf(const char* format, ...) __attribute__ ((format (printf, 1, 2))) 这里的1, 表示format string所在参数的下标(从1开始); 2表示可变参数开始的下标. 2. va_list void my_print(…