将具有“成员”函数的 C 风格结构与 C++ 类进行比较,试图对 C++ 开销进行建模,我怀疑以下实现通过包含相同数量的指令大致相同。我发现 C 实现在调用“成员”函数时会产生额外的指令。
\nint main()\n{\n\xc2\xa0 \xc2\xa0 uint32_t a;\n\xc2\xa0 \xc2\xa0 rectangle_t r;\n \n /* struct */\n\xc2\xa0 \xc2\xa0 r.set(2,3, &r);\n /* asm \n ldr \xc2\xa0 \xc2\xa0 r3, [r7, #12]\n adds \xc2\xa0 \xc2\xa0r2, r7, #4\n movs \xc2\xa0 \xc2\xa0r1, #3\n movs \xc2\xa0 \xc2\xa0r0, #2\n blx \xc2\xa0 \xc2\xa0 r3\n */\n\n\xc2\xa0 \xc2\xa0 a = r.getArea(&r);\n /* asm \n ldr \xc2\xa0 \xc2\xa0 r3, [r7, #16]\n adds \xc2\xa0 \xc2\xa0r2, r7, #4\n mov \xc2\xa0 \xc2\xa0 r0, r2\n blx \xc2\xa0 \xc2\xa0 r3\n str …Run Code Online (Sandbox Code Playgroud) 我试图保留一个变量,以便在调试优化代码时可以看到它的值。为什么以下是非法的常量表达式?
void foo(uint_32 x)
{
static uint_32 y = x;
...
}
Run Code Online (Sandbox Code Playgroud)