【博客119】__attribute__( ( format( printf,m,n ) ) )作用

内容: attribute( ( format( printf,m,n ) ) )这个这个句子之前很经常看到,但是一直没有去注意它的作用,直到最近在公司写业务代码的时候,出现了这个,所以这回学会了它的作用

attribute是GNU C特色之一,在linux开发中用的比较广泛.系统中有许多地方使用到.
attribute可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )
和类型属性(Type Attribute).
比如:
1.设置一个函数在main之前执行,这个在c一般是需要注册的,在c++我们可以通过全局对象的构造函数
来实现
2.实现参数的检查,使你的函数具有像printf解析格式化字符串那样来检测你的参数是否符合要求
...
...
等等


具体的使用如下所示:
__attribute__((format(printf, a, b)))
__attribute__((format(scanf, a, b)))

其中参数m与n的含义为:
  a:第几个参数为格式化字符串(format string); //就是判断规则
  b:参数集合中的第一个,即参数“…”里的第一个参数在函数参数总数排在第几。//从哪个开始判断

有了这个你就可以省去很多自己写判断的代码啦!如果有兴趣自己实现一下类似printf的这种可变参数
函数的话,可以去看一下我之前写的一篇博文哈

https://blog.csdn.net/qq_43684922/article/details/95879575

大四学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。

发布了158 篇原创文章 · 获赞 34 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43684922/article/details/103319012