[c++]printf的编译器静态检测

常常会用到C的格式化字符串,gcc/clang的扩展,都是能够进行字符串和可变参数的检测,不匹配,就会爆warning.函数

本身手写的,须要加上一点代码,不然不会进行检测.this

1.  可变参数orm

void my_printf(const char* format, ...) __attribute__ ((format (printf, 1, 2)))字符串

这里的1, 表示format string所在参数的下标(从1开始);string

2表示可变参数开始的下标.form

2. va_listgcc

void my_print(const char* format, va_list args) __attribute__ ((format (printf, 1, 0)))扩展

若是是va_list,那么第二个index填成0便可.gc

3. this callcall

C++这种this call,this是第一个函数成员,只要别忘了这个就行.

相关文章
相关标签/搜索