c中宏定义的一些应用积累

原创 2015年11月19日 12:50:00
1.数据拆分宏定义
#define BYTE0(dwTemp)       ( *( (char *)(&dwTemp)    ) )
#define BYTE1(dwTemp)       ( *( (char *)(&dwTemp) + 1) )
#define BYTE2(dwTemp)       ( *( (char *)(&dwTemp) + 2) )
#define BYTE3(dwTemp)       ( *( (char *)(&dwTemp) + 3) )

在通讯中经常需要把数据拆成字节的形式,有多种方法这里是其中一种比较好用的方法

大致的处理过程是 对变量 dwTemp 去地址,然后将其强制转化成char类型的指针  最后再取出指针所指向的内容,这样就完成了对数据的拆分工作

 能完成这种功能的还有种写法就是利用结构体,准确说是联合体示例如下

typedef union 
{
	uint16_t u16_vale;
	uint8_t bytes[2];
}u16_type_u;

int mian ()
{
	u16_type_u u16;
	u16.bytes[0] = 10;
	u16.bytes[1] = 1;
	printf ("%d \n",&u16.u16_value);
	return 0;
}

以上均可以完成数据的拆分工作.


2.充当内联函数使用

示例如下:

#define LED1(a)	if (a)	\
					GPIO_SetBits(GPIOB,GPIO_Pin_0);\
					else		\
					GPIO_ResetBits(GPIOB,GPIO_Pin_0)
关于内联函数,有如下示例大致可说明含义
inline int max (int i ,int j, int k)
{
    if (i<j)
	i = j;
    if  (i<k)
	i = k;
    return i;
}
内联函数的优势在于减少频繁的调用可节省资源

相关文章推荐

处理C预编译宏定义详解

  • 2011年03月19日 08:29
  • 188KB
  • 下载

C_宏定义_技巧____

  • 2009年06月27日 23:52
  • 11KB
  • 下载

【基础C&C++】内联函数&宏定义

内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具...

嵌入式c宏定义

  • 2015年12月08日 11:00
  • 133KB
  • 下载

c常用宏定义,很全面

  • 2009年09月30日 11:36
  • 37KB
  • 下载

objective-C之宏定义实现单例设计模式

Singleton.h// 帮助实现单例设计模式 // .h文件的实现 #define SingletonH(methodName) + (instancetype)shared##methodNa...

iOS常用宏定义总结 --Objective-C

iOS常用宏定义总结 1. 重写DEBUG模式下的NSLog 2. APP屏幕大小相关 3. GCD -- 多线程 dispatch 4. catch缓存文件夹和Documents文件夹 5. 图...

关于C的预编译 宏定义 的一些使用

头文件 防止重复包含 ================ 根据#define 和条件编译 #ifdef、#ifndef #else #endif  最经常的使用是 头文件 防止重复包含。 ...

[Linux C编程]例说makefile增加宏定义

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力。所以特意借助...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c中宏定义的一些应用积累
举报原因:
原因补充:

(最多只允许输入30个字)