e5922000 ldr r2, [r2] 83f0: e51b1008 ldr r1, [fp, #-8] 83f4: e58d1000 str r1, [sp] 83f8: e1a00003 mov r0, r3 83fc: e3a010ff mov r1, #255 ; 0xff 8400: e51b300c ldr r3, [fp, #-12] 8404: ebffffbc bl 82fc <_init+0x44> 8408: e1a00003 mov r0, r3 840c: e24bd004 sub sp, fp, #4 8410: e8bd8800 pop {fp, pc} //解析define和const的不同之处. const 定义的只读变量从汇编角度来看 只是给出了对应的内存地址 而不是像define一样给出的是立即数 所以 const定义的只读变量在程序运行过程中只有一份拷贝 (因为它是全局的只读变量 存放在静态区) 而define定义的宏变量在内存中有若干个拷贝 define宏是在预编译阶段进行替换 而const修饰的只读变量是在编译的时候确定其值 define宏没有类型 而const修饰的只读变量具有特定的类型.
|