当前位置:Linux教程 - Linux文化 - 帮忙看下宏定义

帮忙看下宏定义


>>> 此贴的回复 >> __attribute__,__format__和__printf__都是GCC对C语法的扩展。

__attribute__定义函数或变量的属性,其格式为:

__attribute__(( ))

注意__attribute__后面是双括号。

__format__定义函数的参数形式与printf, scanf, strftime和strfmon中的哪一个相似, 其格式为:

__format__ (archetype, string-index, first-to-check)

archetype表示参数形式,可以为__printf__, __scanf__, __strftime__或__strfmon__。 string-index表示第几个参数为格式字符串,first-to-check表示从第几个参数开始对照格式 字符串检查,参数索引从1开始。

__printf__表示为printf形式的参数。

合起来,__attribute__(( __format__ (__printf__, fmt, firstva) )) 表示具有 printf形式参数的函数。

这个宏可以这样用:

int my_print_func(const char* fmt, ...) printfunc(1, 2);

这样定义函数之后,编译器会检查对此函数的调用。