+ -
当前位置:首页 → 问答吧 → 常量占内存

常量占内存

时间:2010-07-22

来源:互联网

#define PI  3.14  <---- 有占内存吗?

如果有是属于 RO data(唯读)?

作者: shihyu   发布时间: 2010-07-22

这是预处理期间的吧。

作者: donglongchao   发布时间: 2010-07-22

代码中用了这个PI就有占个3.14,没用到这个不会编译进去

作者: zliming   发布时间: 2010-07-22

本帖最后由 shihyu 于 2010-07-22 16:14 编辑

那PI 算在data 唯读区段?

还是属于 .code?


还有对变量a >> 2;   // 这边2常量也要编进去吗? 会占内存?

作者: shihyu   发布时间: 2010-07-22

text段吧

作者: pandaiam   发布时间: 2010-07-22

本帖最后由 狗气球 于 2010-07-22 16:46 编辑


QUOTE:
那PI 算在data 唯读区段?

还是属于 .code?


还有对变量a >> 2;   // 这边2常量也要编进去吗? 会占内 ...
shihyu 发表于 2010-07-22 16:12




    前面那个就是个C的预编译宏。这东西就是个文本替换。预处理的时候看见PI就给你替换成3.14。

    你那个2也一样,最后应该出现在.text,具体说是作为操作数成为指令的一部分。

    你说的那个.code应该也是代码段。不太清楚.code和.text都是哪里的概念。

作者: 狗气球   发布时间: 2010-07-22

#define只是字符串替换,在编译期间就已经替换掉了,不会占用内存.

const定义的常量是放到.rodata段里的,不过linux下编译完成的程序好像是把.rodata段合并到.text里了

作者: iamxmz   发布时间: 2010-07-22