加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C/C++宏而不是const

发布时间:2020-12-16 10:51:22 所属栏目:百科 来源:网络整理
导读:参见英文答案 What is the difference between #define and const? ????????????????????????????????????6个 宏#define MAX 80相当于const int MAX = 80;两者都是常数,不能修改. 使用宏而不是常量整数不是更好吗?常量整数占用内存.预处理器将宏的名称替换
参见英文答案 > What is the difference between #define and const? ????????????????????????????????????6个
宏#define MAX 80相当于const int MAX = 80;两者都是常数,不能修改.

使用宏而不是常量整数不是更好吗?常量整数占用内存.预处理器将宏的名称替换为其值,对吧?所以它不会记忆.

为什么我会使用const int而不是宏?

解决方法

原因#1:范围界定.宏完全忽略了范围.

namespace SomeNS {

enum Functor {
  MIN = 0,AVG = 1,MAX = 2
};

}

如果上面的代码恰好包含在MAX宏定义之后的文件中,那么它将很高兴地被预处理为80 = 2,并且编译失败.

另外,const变量是类型安全的,可以使用常量表达式安全地初始化(不需要括号)等.

还要注意,当编译器在使用它时可以访问const变量的定义时,允许它“内联”其值.所以如果你从不拿它的地址,它甚至不需要占用空间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读