我读了一个类似的代码:
#define __printf__(a,b) __attribute__((format(printf,a,b,)))
为了了解__printf__
,我需要了解attibute的作用,
有人可以帮我理解吗?>
非常感谢
答案 0 :(得分:1)
格式(archetype,string-index,first-to-check)
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,编译器应该告诉用户)。
在documentation中搜索格式以获取更多信息。