#define outpdw(port, val) (*((volatile dword *)(port))=((dword)(val))) 19: 使用一些宏跟踪调试 ANSI标准说明了五个预定义的宏名。它们是: __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ C++中还定义了 __cplusplus 如果编译器不是标准的,则可能仅支持以上宏名中的几个,或根本不支持。
#define是C语言中最常用的宏定义指令之一,用于定义一个宏。它的基本语法为: #define 宏名 替换文本 宏名可以是任意合法的标识符,替换文本可以是任意合法的C代码。当程序中出现宏名时,预处理器会将其替换为相应的文本。 2. #ifdef / #ifndef / #endif 这三个宏定义指令用于条件编译。#ifdef用于检查一个宏是...
(1)宏名一般用大写; (2)使用宏可以提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改; (3)预处理是在编译之前的处理,预处理不做语法检查; (4)宏定义末尾没有分号;//不加; (5)宏定义自然作用域为从定义开始一直到本文件结尾; (6)可以用#undef命令提前终止宏定义的自然作用域; (7...
出现问题:在此程序中存在着宏定义命令,宏N代表的字符串是2+2,在程序中有对宏N的使用,一般同学在读该程序时,容易产生的问题是先求解N为 2+2=4,然后在程序中计算a时使用乘法,即N*N=4*4=16,其实该题的结果为8,为什么结果有这么大的偏差? 问题解析:如1节所述,宏展开是在预处理阶段完成的,这个阶段把替换...
C语言宏定义(常用宏定义) 常用宏定义 数值相关的宏定义 闰年的判断 ,年份可以整除4并且不能整除100,或者可以整除400,则为闰年; #define IS_LEAP_YEAR(y) (((y) % 4) == 0) && (((y) % 100) != 0)) \ || (((y) % 400) == 0))/*判断是否是闰年*/ 1...
(8).使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义 (9).实参如果是表达式容易出问题 #define S(r) r*r area=S(a+b); 第一步换为area=r*r; 第二步换成area=a+b*a+b; 当定义为#define S(r)((r)*(r))时,area=((a+b)*(a+b)) ...
do{...}while(0) 表示只执行一遍 {} 内的语句,表象来说与 {} 的功能是一致的。不同的是,do{...}while(0) 可以提前退出函数宏、整合为一条语句与强制调用时必须使用 ;。 举例说明,项目中常用的Debug语句来打log信息 #ifdef DEBUG #define DPRINTF(format,...) \ ...
C语言中最常见的宏定义写法 描述 如果让你用C语言写个宏定义,我相信大部分同学顺手就能写出define。 这也是C语言中最常见的宏定义写法,这样的代码在预处理的时候直接被替换。 在C语言中,还有两种宏定义容易被忽略。 一种是预定义宏,顾名思义,就是别人预先定义好的,拿过来用就行。
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。 下面列举一些成熟软件中常用的宏定义: ——— 1、防止一个头文件被重复包含 #ifndef COMDEF_H#define COMDEF_H//头文件内容#endif ——— 2、重新定义一些类型...