我是 C 的新手,想知道哪种编程方式更有效或更受欢迎:
选项 A:
#define flag true
void Foo()
{
for (size_t i = 0; i < veryBigNumber; i++)
{
if (flag)
doSomething1();
doSomething2();
}
}
选项 B:
#define flag
void Foo()
{
for (size_t i = 0; i < veryBigNumber; i++)
{
#if defined(flag)
doSomething1();
#endif
doSomething2();
}
}
最佳答案
除非您使用的是非常陈旧/愚蠢的编译器,否则它们应该是等效的。
#if
保证在编译时进行评估,但是任何现代编译器也会在编译时评估带有整数常量 的常规if
。
(无论如何,您距离自己找出答案只有一步之遥。
只需在 veryBigNumber
中放入一个非常大的数字,并对两个变体分别计时。如果非常大的数字真的非常大(数百万、数十亿),即使是外部计时(time ./a.out
来自命令行)也应该给你相当可靠的计时。)
关于c - #define 在 C 中的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42202154/