C语言

C语言常用宏定义的用法介绍

时间:2024-10-06 23:10:45 C语言 我要投稿
  • 相关推荐

C语言常用宏定义的用法介绍

  C语言中的宏定义是最常用的组成部分之一,他们在编程时有重要作用,正确应用可以减少很多代码工作量,但是使用过渡,则会造成可读性降低。下面小编给大家介绍C语言常用宏定义的用法介绍,欢迎阅读!

  C语言常用宏定义的用法介绍

  对于宏定义,需要注意以下说明:

  (1)宏名一般用大写;

  (2)使用宏可以提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改;

  (3)预处理是在编译之前的处理,预处理不做语法检查;

  (4)宏定义末尾没有分号;//不加;

  (5)宏定义自然作用域为从定义开始一直到本文件结尾;

  (6)可以用#undef命令提前终止宏定义的`自然作用域;

  (7)宏定义可以嵌套;

  (8)字符串“”中永远不包含宏;

  (9)宏定义不会分配内存,变量定义分配内存;

  (10)宏定义不存在类型问题,它的参数也是无类型的,它仅仅是替换;

  (11)宏定义可以带参数,但需要注意的是每个参数是一个整体,在定义体中要注意括起来。

  下面列举了一些非常常用的宏定义用法:

  常数定义

  #define PI 3.1415926

  防止重复包含

  #ifndef __MY_HEAD_H__

  #define __MY_HEAD_H__

  ...//这里的内容可以保证不被重复包含

  #endif

  求最大最小值

  #define GET_MAX(x, y) (((x) >= (y)) ? (x) : (y))

  #define GET_MIN(x, y) (((x) <= (y)) ? (x) : (y))

  得到结构体成员的偏移

  #define FPOS(type, field) ((unsigned long)&((type *)0)->field)

  拼接字节为字

  #define MAKEWORD(h, l) (((h)<<8) | (l))

  #define MAKEDWORD(h, l) (((h)<<16) | (l))

  获得高、地位字节或者字

  #define WORD_LO(w) ((unsigned char)((w) & 0xFF))

  #define WORD_HI(w) ((unsigned char)((w) >> 8))

  #define DWORD_LO(dw) ((unsigned short)((dw) & 0xFFFF))

  #define DWORD_HI(dw) ((unsigned short)((dw) >> 16))

  将一个字母转换为大写

  #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 ARR_SIZE(a) (sizeof((a))/sizeof(((a)[0])))


【C语言常用宏定义的用法介绍】相关文章:

C语言预定义宏用法10-06

C语言宏定义07-01

C语言宏定义技巧09-03

C语言的宏定义分析09-10

关于C语言宏定义的技巧09-21

简单讲解C语言中宏的定义与使用07-30

C语言变量定义07-29

C语言函数的定义07-13

C 语言中宏的使用08-02

C语言的assert断言宏10-21