min*_*hua 6 c printf gcc warnings wrapper
当C printf()及其系列由命令行编译gcc并-Wall在命令行上使用时,编译器会根据正在使用的格式字符串警告错误的参数.作为一个例子,下面的代码会得到一条错误消息,说明格式指定了3个参数,但实际上你只传递了两个.
printf("%d%d%d", 1, 2);
Run Code Online (Sandbox Code Playgroud)
在编写包装器时printf(),如何保留此功能?一种功能或宏的形式将是我能想到的.但是简单的解析器也是可以接受的.
可以在stackoverflow上找到编写printf包装器的几种方法.两种常见的方法是使用vprintf和varargs,并使用__builtin_apply.我试过这两种方法,都没有用.
您可以使用gcc 格式函数属性,以便根据格式字符串检查参数。
extern int my_printf (void *my_object, const char *my_format, ...)
__attribute__ ((format (printf, 2, 3)));
Run Code Online (Sandbox Code Playgroud)
查看gcc手册“ 6.31.1常用功能属性”
| 归档时间: |
|
| 查看次数: |
1366 次 |
| 最近记录: |