我是C的新手,并且想知道哪个是更有效或首选的方式来编程以下内容:
选项A:
#define flag true
void Foo()
{
for (size_t i = 0; i < veryBigNumber; i++)
{
if (flag)
doSomething1();
doSomething2();
}
}
Run Code Online (Sandbox Code Playgroud)
选项B:
#define flag
void Foo()
{
for (size_t i = 0; i < veryBigNumber; i++)
{
#if defined(flag)
doSomething1();
#endif
doSomething2();
}
}
Run Code Online (Sandbox Code Playgroud)
除非你是一个非常古老/愚蠢的编译器,否则它们应该是等价的.
#if保证在编译时进行评估,但是任何现代编译器都会在编译时if使用整数常量来计算常规.
(无论如何,你距离发现自己只有一步之遥.只需要在veryBigNumber这两个变种中加入一个非常大的数字和时间.如果非常大的数字真的非常大(数百万,数十亿)甚至可以在外部计时(time ./a.out从命令行)应该给你相当可靠的时间.)
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |