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

c – const通常使用比#define更多或更少的内存吗?

发布时间:2020-12-16 09:55:42 所属栏目:百科 来源:网络整理
导读:我理解它们是如何工作的,但我很好奇是否其中一个实际上更有效地记忆. #define似乎一直在嵌入式C世界中使用,但我想知道它是否在大多数情况下在const上实际上是合理的. 如果一个比另一个更有效,有没有人有办法测试并显示这个? 解决方法 让#define放在一边,因
我理解它们是如何工作的,但我很好奇是否其中一个实际上更有效地记忆. #define似乎一直在嵌入式C世界中使用,但我想知道它是否在大多数情况下在const上实际上是合理的.

如果一个比另一个更有效,有没有人有办法测试并显示这个?

解决方法

让#define放在一边,因为它在你的程序中并不存在.预编译器会在编译器发现它们曾经存在之前获取宏并扩展它们.

以下来源:

#define X 42
printf("%d",X);

实际上是以下程序:

printf("%d",42);

所以你要问的是,这需要更多或更少的内存:

const int x = 42;
printf("%d",x);

这是一个我们无法完全回答的问题.

一方面,值42需要在你的程序中存在,否则执行它的计算机将不知道该怎么做.

另一方面,它既可以在程序中硬编码,也可以优化,也可以在运行时安装到内存中再次拉出.

无论哪种方式,它需要32位(可能不是32位),并且如何将它引入程序并不重要.

任何进一步的分析都取决于您正在使用的价值.

(编辑:李大同)

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

    推荐文章
      热点阅读