当前位置: 技术问答>linux和unix
求助:在内核Device.h中有这样一些语句
来源: 互联网 发布时间:2016-11-05
本文导语: static inline int dev_emerg(const struct device *dev, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); static inline int dev_emerg(const struct device *dev, const char *fmt, ...) { return 0; } static inline int dev_crit(const struct devi...
static inline int dev_emerg(const struct device *dev, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3)));
static inline int dev_emerg(const struct device *dev, const char *fmt, ...)
{ return 0; }
static inline int dev_crit(const struct device *dev, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3)));
static inline int dev_crit(const struct device *dev, const char *fmt, ...)
{ return 0; }
static inline int dev_alert(const struct device *dev, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3)));
static inline int dev_alert(const struct device *dev, const char *fmt, ...)
{ return 0; }
static inline int dev_err(const struct device *dev, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3)));
完全看不懂什么意思,请高手指教一下。
1.参数里的...是什么意思啊?
2.__attribute__又是什么意思?
3.format 呢?
麻烦高手指导一下,谢谢啦。
__attribute__ ((format (printf, 2, 3)));
static inline int dev_emerg(const struct device *dev, const char *fmt, ...)
{ return 0; }
static inline int dev_crit(const struct device *dev, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3)));
static inline int dev_crit(const struct device *dev, const char *fmt, ...)
{ return 0; }
static inline int dev_alert(const struct device *dev, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3)));
static inline int dev_alert(const struct device *dev, const char *fmt, ...)
{ return 0; }
static inline int dev_err(const struct device *dev, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3)));
完全看不懂什么意思,请高手指教一下。
1.参数里的...是什么意思啊?
2.__attribute__又是什么意思?
3.format 呢?
麻烦高手指导一下,谢谢啦。
|
以static inline int dev_err(const struct device *dev, const char *fmt, ...)
__attribute__ ((format (printf, 2, 3)));为例
1.参数里的...是什么意思啊?
...表示后面可能还会有参数,而且个数不确定,也可能没有了
2.__attribute__又是什么意思?
这是gcc的一个builtin的功能,表示提供额外的属性,可以用在函数,变量等
3.format 呢?
这里format是attribute的一个参数,表示这是一个format的attribute。还有很多参数,如noreturn,const等。具体可以参考gcc的文档。
这里format (printf, 2, 3))format的第一个参数是archetype,可以是scanf, printf, strftime或strfmon,表示用哪种格式,这里用printf格式。第二个参数是string-index,表示从第几个开始是string format,就是相当于printf中的第一个参数,这里是2。第三个参数是first-to-check,表示string format的第一个参数,功能类似printf的第二个参数,这里是3。
__attribute__ ((format (printf, 2, 3)));为例
1.参数里的...是什么意思啊?
...表示后面可能还会有参数,而且个数不确定,也可能没有了
2.__attribute__又是什么意思?
这是gcc的一个builtin的功能,表示提供额外的属性,可以用在函数,变量等
3.format 呢?
这里format是attribute的一个参数,表示这是一个format的attribute。还有很多参数,如noreturn,const等。具体可以参考gcc的文档。
这里format (printf, 2, 3))format的第一个参数是archetype,可以是scanf, printf, strftime或strfmon,表示用哪种格式,这里用printf格式。第二个参数是string-index,表示从第几个开始是string format,就是相当于printf中的第一个参数,这里是2。第三个参数是first-to-check,表示string format的第一个参数,功能类似printf的第二个参数,这里是3。