这个问题已经致死,我同意枚举是必经之路。但是,我很好奇最终代码中的枚举如何编译 - #defines只是字符串替换,但是枚举是否为编译的二进制添加了任何内容?还是在那个阶段都等效。当编写固件和内存非常有限时,使用#Defines是否有任何优势?

谢谢!

编辑:按照下面的评论要求,嵌入式,我的意思是数码相机。

感谢您的答案!我全都是枚举!

有帮助吗?

解决方案

两者都是 恒定表达式 在标准的术语中,因此,任何理智的编译器都应在编译时“完全评估”它们。生成不同的代码需要恶意的病理编译器。

其他提示

一个 enum 最终只是一个整数。编译器繁殖值,就像 const.

如果不以其他方式进行分析或测量,这是不可能说的。

但是,任何体面的编译器都不会显示任何显着差异。此外,您应该始终更喜欢可读的,类型的代码,而不是高效,不可读取的,陷入困境的代码。在您证明两件事之前,不要开始优化效率上的可读性:

  1. 您实际上需要提高效率
  2. 您要更改的程序的一部分已被探索者证明是瓶颈。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top