【发布时间】:2016-10-13 10:56:58
【问题描述】:
哪个更好:
#define PI 3.14
或
const double PI = 3.14;
这是一个面试问题,我似乎找不到明确的答案。
我想我不应该使用宏,但我想对此有一个坚定的答案。
编辑: 所以question marked duplicate 说,定义“不尊重范围”,但我真的不想要范围,我想要一个超级全局的东西,PI 必须是无处不在的 PI,应该从任何地方访问。 #define 在这里对我来说似乎更合理。
另外我看不出在编译时使用 PI 会在哪里出错,所以请提供一个示例。
【问题讨论】:
-
id 认为这取决于您的目标平台。更具体地说,编译器创建程序集和底层 cpu 指令集的方式。举个例子,如果你 #define 一个常量 double,并且编译器将它作为立即数发出,那么一条指令可能会比它简单地发出对内存位置的引用大 2-4 个字节。 2-4 个字节 10000 次加起来并不是很多。但是,如果您的目标平台上只有 4kb 的代码空间,您可能想做其他事情。