use*_*ser 4 c c++ performance gcc compilation
可能有任何因为内联的#define陈述.
我理解答案可能是编译器依赖的,然后让我们假设GCC.
编译器会将它们视为给定的基本优化.
检查相当容易 - 考虑以下c代码:
#define a 1
static const int b = 2;
typedef enum {FOUR = 4} enum_t;
int main() {
enum_t c = FOUR;
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
用gcc -O3编译:
0000000000400410 <main>:
400410: 48 83 ec 08 sub $0x8,%rsp
400414: be 01 00 00 00 mov $0x1,%esi
400419: bf 2c 06 40 00 mov $0x40062c,%edi
40041e: 31 c0 xor %eax,%eax
400420: e8 cb ff ff ff callq 4003f0 <printf@plt>
400425: be 02 00 00 00 mov $0x2,%esi
40042a: bf 2c 06 40 00 mov $0x40062c,%edi
40042f: 31 c0 xor %eax,%eax
400431: e8 ba ff ff ff callq 4003f0 <printf@plt>
400436: be 04 00 00 00 mov $0x4,%esi
40043b: bf 2c 06 40 00 mov $0x40062c,%edi
400440: 31 c0 xor %eax,%eax
400442: e8 a9 ff ff ff callq 4003f0 <printf@plt>
Run Code Online (Sandbox Code Playgroud)
绝对相同的汇编代码,因此 - 完全相同的性能和内存使用.
编辑:正如达蒙在评论中所说的那样,可能会出现一些诸如复杂的非文字之类的极端情况,但这有点超出了问题.