gcc属性,它是做什么的?

gcc属性,它是做什么的?,gcc,Gcc,我读了一段代码,有这样的东西: #define __printf__(a,b) __attribute__((format(printf,a,b,))) 为了理解\uuuu printf\uuuuuu,我需要了解attibute做什么 有人能帮我理解这一点吗?> 多谢各位 格式(原型、字符串索引、首先检查) format属性指定函数接受printf、scanf、strftime或strfmon样式的参数,这些参数应根据格式字符串进行类型检查。例如,宣言: extern int

我读了一段代码,有这样的东西:

#define __printf__(a,b) __attribute__((format(printf,a,b,)))
为了理解
\uuuu printf\uuuuuu
,我需要了解attibute做什么

有人能帮我理解这一点吗?>

多谢各位

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

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

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

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

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

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