最近在看Atmel官方库文件时,发现在他的.h头文件中,有大量static inline这样的方式定义函数,有几个疑问,
1,不是说不能在头文件中定义函数吗,只能声明吗?为什么能用这种方式在头文件中定义函数
2,函数前加上static不是表示静态吗,为什么这些函数我还能在其他源文件中引用呢?
3,官方static inline这样定义有什么好处?
大概是如下这种形式:
#ifndef ATMEL_START_PINS_H_INCLUDED
#define ATMEL_START_PINS_H_INCLUDED
#include <port.h>
static inline void sum_set_pull_mode(const enum port_pull_mode pull_mode)
{
PORTB_set_pin_pull_mode(0, pull_mode);
}
static inline void sum_set_dir(const enum port_dir dir)
{
PORTB_set_pin_dir(0, dir);
}
|