我读了一段代码,里面是这样的:
#define __printf__(a,b) __attribute__((format(printf,a,b,)))
为了__printf__
理解,我需要了解属性是做什么的,
谁能帮我理解这个?>
太感谢了
我读了一段代码,里面是这样的:
#define __printf__(a,b) __attribute__((format(printf,a,b,)))
为了__printf__
理解,我需要了解属性是做什么的,
谁能帮我理解这个?>
太感谢了
格式(原型、字符串索引、首先检查)
format 属性指定函数采用 printf、scanf、strftime 或 strfmon 样式参数,这些参数应根据格式字符串进行类型检查。例如,声明:
extern int my_printf (void *my_object, const char *my_format, ...) __attribute__ ((format (printf, 2, 3)));
导致编译器检查对 my_printf 的调用中的参数是否与 printf 样式格式字符串参数 my_format 保持一致。
它基本上是给编译器的一个注释,用于在编译时根据给定的格式类型验证它可以验证的任何字符串。在引用的行中,它告诉编译器根据 printf 格式字符串验证 printf 格式字符串(例如,如果为%s
参数传递了一个 int,编译器应该告诉用户)。
在文档中搜索格式以获取更多信息。