小编Pis*_*ic 的帖子

为什么 C 风格的“类”会产生额外的指令?

将具有“成员”函数的 C 风格结构与 C++ 类进行比较,试图对 C++ 开销进行建模,我怀疑以下实现通过包含相同数量的指令大致相同。我发现 C 实现在调用“成员”函数时会产生额外的指令。

\n
int 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)

c assembly struct arm class

8
推荐指数
1
解决办法
149
查看次数

为什么这是一个非法的常量表达式?

我试图保留一个变量,以便在调试优化代码时可以看到它的值。为什么以下是非法的常量表达式?

   void foo(uint_32 x)
   {
       static uint_32 y = x;
       ...
   }
Run Code Online (Sandbox Code Playgroud)

c static expression constants storage-class-specifier

4
推荐指数
2
解决办法
286
查看次数