1

我读了一段代码,里面是这样的:

#define __printf__(a,b) __attribute__((format(printf,a,b,)))

为了__printf__理解,我需要了解属性是做什么的,

谁能帮我理解这个?>

太感谢了

4

1 回答 1

1

格式(原型、字符串索引、首先检查)

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,编译器应该告诉用户)。

在文档中搜索格式以获取更多信息。

于 2012-11-08T05:10:16.687 回答