`
garfieldcatcat
  • 浏览: 6662 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

宏定义

阅读更多
得到指定地址上的一个字节或字
#define MEM_B(x) (*((byte *)(x)))
#define MEM_W(x) (*((word *)(x)))

求最大值和最小值
#define MAX(x,y) (((x)>(y)) ? (x) : (y))
#define MIN(x,y) (((x) < (y)) ? (x) : (y))

得到一个field在结构体(struct)中的偏移量
#define FPOS(type,field) ((dword)&((type *)0)->field)

得到一个结构体中field所占用的字节数
#define FSIZ(type,field) sizeof(((type *)0)->field)

按照LSB格式把两个字节转化为一个Word
#define FLIPW(ray) ((((word)(ray)[0]) * 256) + (ray)[1])

按照LSB格式把一个Word转化为两个字节
#define FLOPW(ray,val) (ray)[0] = ((val)/256); (ray)[1] = ((val) & 0xFF)

得到一个变量的地址(word宽度)
#define B_PTR(var) ((byte *) (void *) &(var))
#define W_PTR(var) ((word *) (void *) &(var))

得到一个字的高位和低位字节
#define WORD_LO(xxx) ((byte) ((word)(xxx) & 255))
#define WORD_HI(xxx) ((byte) ((word)(xxx) >>)

返回一个比X大的最接近的8的倍数
#define RND8(x) ((((x) + 7)/8) *

将一个字母转换为大写
#define UPCASE(c) (((c)>='a' && (c) <= 'z') ? ((c) - 0x20) : (c))

判断字符是不是10进值的数字
#define DECCHK(c) ((c)>='0' && (c)<='9')

判断字符是不是16进值的数字
#define HEXCHK(c) (((c) >= '0' && (c)<='9') ((c)>='A' && (c)<= 'F') \
((c)>='a' && (c)<='f'))

防止溢出的一个方法
#define INC_SAT(val) (val=((val)+1>(val)) ? (val)+1 : (val))

返回数组元素的个数
#define ARR_SIZE(a) (sizeof((a))/sizeof((a[0])))

返回一个无符号数n尾的值
MOD_BY_POWER_OF_TWO(X,n)=X%(2^n)
#define MOD_BY_POWER_OF_TWO( val, mod_by ) ((dword)(val) & (dword)((mod_by)-1))

对于IO空间映射在存储空间的结构,输入输出处理
#define inp(port) (*((volatile byte *)(port)))
#define inpw(port) (*((volatile word *)(port)))
#define inpdw(port) (*((volatile dword *)(port)))
#define outp(port,val) (*((volatile byte *)(port))=((byte)(val)))
#define outpw(port, val) (*((volatile word *)(port))=((word)(val)))
#define outpdw(port, val) (*((volatile dword *)(port))=((dword)(val)))
分享到:
评论

相关推荐

    嵌入式编程中的宏定义

    嵌入式编程中的宏定义 嵌入式编程中,宏定义是提高代码可移植性、可靠性和可读性的重要工具。宏定义可以防止出错,提高代码的可移植性和可读性,并且方便维护。下面我们将介绍一些常用的宏定义,包括防止头文件重复...

    sourceInsight宏定义

    **Source Insight 宏定义详解** Source Insight是一款广受程序员喜爱的源代码查看和编辑工具,以其强大的代码导航、语法高亮和自定义功能而闻名。宏定义是Source Insight中的一个重要特性,它允许用户通过自定义...

    c语言宏定义技巧,常用宏定义方法

    ### C语言宏定义技巧详解 #### 一、引言 在C语言编程中,宏定义是一种非常实用且强大的工具,它能够帮助程序员更好地组织代码、提高代码的可读性和可维护性。通过合理地使用宏定义,我们不仅能够避免一些常见的...

    Freertos之系统配置宏定义解析

    在FreeRTOS中,系统配置宏定义位于一个名为FREERTOS_CONFIG.H的头文件中,它允许用户根据项目需求对FreeRTOS的行为进行定制。下面我们详细分析这些宏定义的含义及其作用: 1. #ifndef FREERTOS_CONFIG_H 2. #define...

    单片机宏定义学习手记

    单片机宏定义是一种编程技巧,它可以简化代码编写工作,提高程序的可读性和维护性。宏定义通常用在需要反复使用某段代码,且这些代码本质上不会改变的情况下。在单片机编程中,宏定义可以用于简化寄存器操作、控制...

    宏定义和函数调用的区别

    在探讨宏定义与函数调用的区别时,我们深入解析它们在C语言编程中的特性、应用场景以及潜在风险,以便更全面地理解这两种编程机制。 ### 宏定义与函数调用的本质区别 #### 宏定义(#define) 宏定义是预处理器的一...

    306-宏定义应用举例(51单片机C语言实例Proteus仿真和代码)

    306-宏定义应用举例(51单片机C语言实例Proteus仿真和代码)306-宏定义应用举例(51单片机C语言实例Proteus仿真和代码)306-宏定义应用举例(51单片机C语言实例Proteus仿真和代码)306-宏定义应用举例(51单片机C语言实例...

    C++宏定义说明(详解)

    ### C++宏定义详解 #### 一、宏定义概述 宏定义是C++语言中预处理器的一种特性,它允许开发者创建简单的文本替换规则。通过宏定义,开发者可以在编译前阶段将特定的文本模式(宏名)替换为另一段文本(宏定义的...

    dll导出导入宏定义使用总结

    ### DLL导出与导入宏定义使用总结 #### 引言 动态链接库(Dynamic Link Library,简称DLL)是Windows系统中的一个重要组成部分,广泛应用于软件开发过程中。通过DLL,可以实现代码及数据的共享,提高软件的运行...

    规范的宏定义格式以及宏定义编程技巧

    根据提供的标题、描述、标签及部分内容,我们可以提炼出与“规范的宏定义格式以及宏定义编程技巧”相关的多个知识点。 ### 规范的宏定义格式 #### 1. 防止宏重复定义 在宏定义中,为了避免同一个头文件被多次包含...

    C语言常用宏定义.doc

    "C语言常用宏定义" C语言中的宏定义是一种预处理指令,用于将一个符号定义为一个字符串或一组字符串。宏定义可以提高代码的可读性和可维护性,也可以增加代码的效率和灵活性。 1、防止头文件重复包含 #ifndef ...

    威纶通触摸屏设计,宏定义,操作使用说明

    本篇将详细介绍如何利用威纶通触摸屏进行设计,特别是宏定义及其操作使用。 首先,宏定义是威纶通触摸屏编程中的一个重要概念。宏定义允许用户自定义一系列的操作或函数,这些操作可以在程序中被调用,以简化编程...

    巧用C语言宏定义实现自动注释调试代码

    在编程世界中,C语言是一种基础且强大的编程语言,它提供了丰富的预处理器功能,其中宏定义就是其中之一。宏定义在代码开发和调试过程中扮演着重要角色,尤其在大型项目中,能够有效地提升效率和代码可读性。本文将...

    c语言带参数的宏定义

    ### C语言带参数的宏定义详解 #### 一、引言 C语言作为一种广泛使用的编程语言,提供了多种机制来提高代码的复用性和可维护性。宏定义是C语言中的一个重要特性,它允许程序员创建自定义的文本替换规则。本文将深入...

    c/c++宏定义 宏定义的入门教材 基础

    ### C/C++宏定义基础知识详解 #### 一、引言 在C/C++编程语言中,宏定义是一种非常实用的功能,它可以用来简化代码编写过程,提高编程效率,并且有助于代码的可读性和维护性。本文将详细介绍C/C++中的宏定义基础...

    C宏定义详解

    C宏定义详解 本节课详细介绍了C语言中的宏定义(Macro),包括防止头文件被重复包含、重新定义类型、获取指定地址上的一个字节或字、求最大值和最小值、获取结构体中字段的偏移量等多种应用场景。 一、防止头文件...

    常用宏定义#define

    在C/C++编程语言中,`#define` 是预处理器指令,用于创建宏定义,它在编译阶段执行文本替换,使得代码更加灵活且可定制化。宏定义是C/C++编程中的一个重要概念,它可以帮助程序员实现代码复用、简化复杂表达式、提供...

    宏定义使用技巧2

    ### 宏定义使用技巧2 #### 一、引言 在C语言开发中,宏定义是一种非常实用且强大的工具,能够极大地提升代码的可维护性和可读性。本文旨在介绍几种常用的宏定义技巧,帮助开发者更好地掌握如何利用宏定义来优化...

    函数模板与宏定义

    在编程领域,函数模板和宏定义是两种常见的代码复用技术,它们都能帮助开发者提高代码的效率和可维护性。本文将深入探讨这两种方法的原理、优缺点以及使用场景。 函数模板是C++中的一项重要特性,它允许我们创建...

Global site tag (gtag.js) - Google Analytics