关于#define的理解

C代码中经常用到#define定义一个标识符来表示一个常量,这种用法在C++中也可以使用。当然,在C++中更推荐的方法是使用关键字const来创建一个只读的符号常量。关于const在之后再讨论,本篇就#define的理解来进行一些说明和记录。

1.用#define定义常量的方法叫做宏定义,所定义的符号叫做宏。 定义的方式为#define 标识符 常量  注意在结尾不需要加分号。

2.#define定义的符号是不占用内存的,只是一个临时的符号,预编译后这个符号就不存在了。

3.#define和#include的写法是一样的,所以#define是一个预处理器编译指令,使用预处理器处理,预处理器遇到#define指令时会查找对应的标识符,然后将标识符替换成其所对应的常量。例如: #define MAX 123456 这里定义了一个符号常量MAX,其对应的常量值为123456,预处理器在之后的代码中遇到MAX时会将其替换成123456。

4.预处理器查找独立的标识,跳过嵌入的标识。例如: #define MAX 123456  在之后的代码中遇到了一个标识IMAXP,预处理器会跳过,而不会将其替换成I123456P。

5.在设计一个C和C++都可以使用的头文件中,必须使用#define,而不可以使用const。

6.宏定义 #define 一般都写在函数外面,与 #include 写在一起。当然,写在函数里面也没有语法错误,但通常不那么写。#define 的作用域为自 #define 那一行起到源程序结束。如果要终止其作用域可以使用 #undef 命令,格式为:undef 标识符。

以上为我对#define理解的一些简单梳理,其中3 4条关于#define的工作机制问题,6关于#define的作用域问题。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值