我记得以前学 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 定义的,会有更多的内存分配 这种说法是不是不对?
- 2 回答
- 0 关注
- 788 浏览
添加回答
举报
0/150
提交
取消