px4源码阅读笔记—(1)
从今天开始,把看px4源码遇到的各种语法知识罗列出来以备日后查看 复习 巩固
static bool arm_nothrottle()
{
return ((_armed.prearmed && !_armed.armed) || _armed.in_esc_calibration_mode);
}
static 修饰函数叫做静态函数,静态函数有两种,根据其出现的地方来分类:
如果这个静态函数出现在类里,那么它是一个静态成员函数;
静态成员函数的作用在于:调用这个函数不会访问或者修改任何对象(非static)数据成员。
其实很好理解,类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。
如果它不是出现在类中,那么它是一个普通的全局的静态函数。
<1> 其他文件中可以定义相同名字的函数,不会发生冲突。
<2> 静态函数不能被其他文件所用。
enum pwm_limit_state {
PWM_LIMIT_STATE_OFF = 0,
PWM_LIMIT_STATE_INIT,
PWM_LIMIT_STATE_RAMP,
PWM_LIMIT_STATE_ON
};//枚举,后面没被初始化的默认+1
typedef struct {
enum pwm_limit_state state;
uint64_t time_armed;
} pwm_limit_t;//typedef为这个新的结构起了一个名字,叫pwm_limit_t
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 6
case MODE_6PWM:
#endif
#if xxx
代码段1
#else
代码段2
#endif
如果xxx为真则执行代码段1否则执行代码段2
switch (_mode) {
case MODE_1PWM:
case MODE_2PWM:
case MODE_3PWM:
case MODE_4PWM:
case MODE_2PWM2CAP:
case MODE_3PWM1CAP:
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 6
case MODE_6PWM:
#endif
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8
case MODE_8PWM:
#endif
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14
case MODE_14PWM:
#endif
ret = pwm_ioctl(filp, cmd, arg);
break;
//前面所有的case都运行ret = pwm_ioctl(filp, cmd, arg);然后break
default:
PX4_DEBUG("not in a PWM mode");
break;
}
px4 v1.8.0姿态控制部分源码分析
https://blog.csdn.net/lookije/article/details/82891266