我记得以前学 c++,学到 const 的时候,都建议使用 const 定义变量,而不是 define。
const int N = 10; // better#define N 10 // bad
除了类型安全等原因,其中一个讲到的就是 define 定义的宏在展开后,相比 const 定义的,会有更多的内存分配,比如这篇文章:https://blog.csdn.net/love_ga...
然后我用 visual studio 2015汇编下,看到的都是,
#include<iostream>#include <stdio.h>using namespace std;const int N = 1; // #define N 1 下汇编也是和下面一样的int main(){010B16D0 push ebp 010B16D1 mov ebp,esp 010B16D3 sub esp,0D8h 010B16D9 push ebx 010B16DA push esi 010B16DB push edi 010B16DC lea edi,[ebp-0D8h] 010B16E2 mov ecx,36h 010B16E7 mov eax,0CCCCCCCCh 010B16EC rep stos dword ptr es:[edi] int a = N;010B16EE mov dword ptr [a],1 int b = N;010B16F5 mov dword ptr [b],1 return 0;010B16FC xor eax,eax }
dword ptr [a],1
这句,逗号的后面使用的都是立即数 1。
我在 stack overflow 上查了下 define vs const
相关的帖子(比如 https://stackoverflow.com/que...),并没有提及define
会带来更多的内存分配。
那么,define 定义的宏在展开后,相比 const 定义的,会有更多的内存分配 这种说法是不是不对?
守候你守候我
元芳怎么了
相关分类