C中的宏内存占用?

时间:2015-04-14 18:40:26

标签: c memory memory-management macros

哪一个会花费更多内存? 宏观或全局变量?

对于前。

#define NAME "subsystem"

const char *name = "subsystem";

And

#define AGE 28
const int age = 28;

对于这两种情况,他们使用相同的内存吗? 或者是全局变量大小小于宏?

1 个答案:

答案 0 :(得分:1)

宏本身在对象文件中不占用任何空间。它是表达源代码的快捷方式或助记符。在宏的帮助下表示的编译源代码所需的内存取决于各种各样的事情,尤其是宏定义的细节以及它们的使用的上下文和频率。

在您的特定示例中,全局变量占用编译对象文件中的空间,但宏不会。然而,这是一个人为的结果。如果表示值的宏使用,则它们表示的值 do 会占用目标文件中的空间。