预编译小常识

本文探讨了C语言中预处理标识符的应用,对比了宏与函数的不同特性及其适用场景,并提供了一个数字位操作的宏定义示例。
熟悉预处理标识符:
//__LINE__

//__FILE__

//__DATE__
//__TIME__

#include<stdio.h>
int main()
{
 int i=0;
 for(i=0; i<10; i++)
 {
  printf("file%s\tline%d\tdate%s\ttime%s\t",
       __FILE__,__LINE__,__DATE__,__TIME__);
 }
 return 0;
}

#include<stdio.h>
#define PRINT(n) \
	printf("num" #n " = %d",num##n)
int main()
{
	int num4=4;
	PRINT(4);
	return 0;
}


2.了解宏和函数的区别。
(1)在宏定义较短执行次数较多时,一般来说宏的效率会比较高
(2)宏定义如果较长时,在函数中多次使用会使得源代码变长
(3)宏定义时不区分定义的类型,函数需要区分参数类型

#include<stdio.h>
#define SUM(X)  ((X)+(X))   
int main()
{
	int n=10;
	float m=3.1;
	int ret1=0;
	int ret2=0;
	ret1=SUM(n);
	ret2=SUM(m);
	printf("ret1=%d\n",ret1);
	printf("ret2=%f\n",ret2);
	return 0;
}

 int Max1_int(int x, int y)
 {
 	return x>y?x:y;
 }
 
 float Max2_float(float x, float y)
 {
 	return x>y?x:y;
 }
 int main()
{
	int n1 = 10;
	int n2 = 20;
	float m1 = 3.1f;
	float m2 = 4.3f;
	int ret1=0;
	float ret2=0;
	ret1=Max1_int(n1,n2);
	ret2=Max2_float(m1,m2);
	printf("ret1=%d\n",ret1);
	printf("ret2=%f\n",ret2);
	return 0;
}
3.写一个宏可以将一个数字的奇数位和偶数位交换

(1)算法分析:将所给的数字通过不断的右移与1,所得到的结果在和每次左移的数字相或,所得到的值就是交换后的数字

int main()
{
	int num = 15;
	int i = 0;
	int ret = 0;
	for(i=0; i<32; i++)
	{	
	ret = ret<<1;		
	ret =ret |((num>>i)&1);		
	}	
	printf("%u\n", ret);
	return 0;
}


(2)将其用宏定义实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#define CHANGE_SITE		\
for(i=0; i<32; i++){	\
	ret = ret<<1;		\
	ret =ret | ((num>>i)&1);  \
	}
int main()
{
	int num = 15;
	int i = 0;
	int ret = 0;
	CHANGE_SITE;	
	printf("%u\n", ret);
	return 0;
}





内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

double_happiness

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值