经常会用到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(const char* format, va_list args) __attribute__ ((format (printf, 1, 0)))

如果是va_list,那么第二个index填成0即可.

3. this call

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

相关文章:

  • 2021-11-28
  • 2022-01-17
  • 2021-09-20
  • 2022-12-23
  • 2022-12-23
  • 2021-05-13
  • 2021-06-23
猜你喜欢
  • 2021-12-11
  • 2021-05-20
  • 2022-01-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案