c - 如何为宏分配内存?

标签 c

对于下面的代码,我定义了一个宏abc,其值已被重新定义两次。当我们运行代码时,输​​出是一些垃圾值,我不明白当它是一个宏并且内存无法分配给宏abc时,宏是如何获取垃圾值的?

    #include<stdio.h>
    #define abc 10
    #define abc "rd"
    int main()
    {
    printf("%d",abc);
    return 0;
    }

最佳答案

宏根本不占用运行时内存,它们完全是编译时(实际上甚至是预处理时)构造。在大多数情况下,您可以将宏视为纯粹的文本替换。所以你的代码 100% 等价于:

#include<stdio.h>

int main()
{
  printf("%d","rd");
  return 0;
}

我相信很清楚为什么这是打印垃圾值。

此外,在没有 #undef 介入的情况下将宏重新定义为其他内容实际上在 C 中是非法的,因此编译器完全拒绝该代码是合理的。

关于c - 如何为宏分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50797306/

相关文章:

c - 排序算法的c实现

c - 这是一个 C 变量吗?

Int值的组合

c - 通过函数调用向数组添加元素

c - 了解 CPU 缓存和缓存行

c - 尝试打印结构元素,但结果为空白。 - C

c - 如何在 Ubuntu 中正确使用 AES_CBC_Encrypt 128 openssl?

c - OpenGL 三角形未显示

c - 使用 C 预处理器进行嵌套宏迭代

c - 在 Vala 中打印阿拉伯语文本