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++面试常考关键字
导语:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。下面就由小编为大家介绍一下C/C++面试常考关键字,欢迎大家阅读!C/C++面试常考关键字总结:ic关键字的作用?1)、static申明的变量为静态全局变量,该变量存储在静态数据区,...
-
C语言中文件操作详解及实例代码
在文件操作中除了打开操作以及读写操作,还有几种比较常见的操作。以下是本站小编搜索整理的关于这些操作中涉及到的函数,,需要的朋友可以参考本文!想了解更多相关信息请持续关注我们应届毕业生考试网!一.移动位置指针的函数rewind函数和fseek函数,这两个函数的原...
-
2017全国计算机二级《C语言》考试题及答案
在备考复习阶段,需通过大量试题练习,加深对考点的理解和掌握。以下是本站小编搜索整理的一份全国计算机二级《C语言》考试题及答案,供参考练习,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!一、选择题1).我们所写的每条C语句,经过编译最...
-
C语言scanf函数应用问题解答
C语言的输入是由系统提供的库函数完成的。scanf函数是C语言中最常用且功能最强的输入函数,但该函数如使用不慎,就会出现错误或得不到预想的结果。以下结果都是基于VC++6.0运行环境。一、格式说明符和输入项的三对应(类型、个数、顺序)scanf函数格式中的格式说明(“%...