当前位置: 首页 > news >正文

c++--define和const

1,属性:

define 是一个预处理器指令,const是关键字。

2,作用

define用于宏定义,定义一段代码的替换文本;

const用于定义常量;

2,作用阶段:

define在预处理阶段被编译器处理,进行替换,const在编译阶段由编译器处理。

3, 作用域

预处理指令(如#define)不受C++作用域规则的限制。这意味着一旦定义了一个宏,它将从定义点开始对整个文件有效,直到遇到相应的#undef或者文件结束。const用于定义常量,变量是受c++语法限制作用域的。

#include <iostream>

void test_define(){
    #define NUM 100
}

int main(){
    std::cout<<"main="<<NUM<<std::endl;
    return 0;
}

4,类型检查

由于#define执行的是简单的文本替换,因此没有类型安全的概念。这可能导致一些不易察觉的错误。const定义的常量具有明确的类型,因此编译器可以在编译期间进行类型检查。

5,使用上

define语句不需要分号,const需要分号。

6,内存上

宏定义的内容在预处理阶段被用于宏替换,不占据内存,const用于定义变量,变量占据内存。

相关文章:

  • 日志2025.2.15
  • B. Olya and Game with Arrays
  • LDR6500 PD芯片:智能充电与数据传输
  • CAS单点登录(第7版)3.安装
  • 家里WiFi信号穿墙后信号太差怎么处理?
  • 【愚公系列】《Python网络爬虫从入门到精通》012-字符串处理
  • 「软件设计模式」装饰者模式(Decorator)
  • SpringBoot 与 SpringCloud的版本对应详细版
  • 3-初始化项目
  • GMSL 实例1:当 MAX96717 遇上 MAX96724,打通 Camera 视频数据传输
  • 【设计模式】【行为型模式】解释器模式(Interpreter)
  • Golang 的字符编码与 regexp
  • 论文设置页码
  • 【PCIe XDMA开发】主机相关设置
  • 【JavaEE进阶】验证码案例
  • 滚动弹幕JS
  • 阿里云视频点播,基于thinkphp8上传视频
  • 性能测试流程、主流性能工具
  • Golang internals
  • Gateway中的Filter机制
  • 七猫征文大赛颁出112万奖金,非遗题材作品斩获金奖
  • 铁路端午假期运输火车票今日开售,12306提升应对超大规模并发访问需求能力
  • 自然资源部:不动产登记累计化解遗留问题房屋2000多万套
  • 马上评|这种“维权”已经不算薅羊毛,涉嫌犯罪了
  • 习近平会见智利总统博里奇
  • 在笔墨金石间,看胡问遂与梅舒适的艺术对话