C语言#define是什么? 怎么用?

如题所述

define ,中文名 就是 :“定义”,俗称 取名字。比如 给圆周率(3.1415) 取个名字 叫 Pai,给 单片机 P1 端口 取名叫 LED 等
#define Pai 3.1415
#define LED P1追问

我是自学c的

我看到过

#define p 3

之类的

我的意思是

他有哪些用法?

怎么用?

追答

define ,C语言中 称为 宏定义,格式为:
#define 用户定义名称 +分隔符(或 Tab键)+表达式(无需分号结尾)
作用:简单 的名称 替换功能,程序中 遇见 定义的名称,编译时 直接 使用 表达式 代替。
单纯的 C语言中(如 win-tc),这个 作用不大,多是 方便 用户理解 跟 阅读。如 求 圆的面积S,很多时候会定义 圆周率 Pai, 计算时 S=Pai*r*r; 此时 就算不定义 也可以写成 S=3.1415*r*r;无关紧要
但,单片机C语言中,宏定义的作用就比较明显,单片机C语言讲究 移植性,比如 甲 写的 流水灯 程序使用 P1端口,而 乙 需要 P2端口,乙拿到 甲 的程序后,只需要 修改 宏定义 #define LED P2 就 完成了,这是简单举例,很多IC 是 复杂端口的。
define 的简单替换功能 也 让 很多新手吃了不少亏,如:
#define sum(x,y) x+y
计算 Q=c*a+c*b 的值
假设 a=2,b=3,c=4
根据数学,Q可以写成 Q=c*(a+b),然后就是 ①Q=c*sum(a,b) 或 ②Q=sum(a+b)*c 了,结果,宏定义的替换是:
① Q=4*2+3=11;
② Q=2+3*4=14;
而实际结果应该是 20,这样 结果都是 因为 宏定义只是简单 替换功能,没有复合结果。为避免此类错误,建议新手在 非单体运算 的宏定义 内容上加个括号:#define Sum(x+y) (x+y)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-03
按我的理解是简单的替换操作。追问

相似回答