【发布时间】:2016-08-21 11:02:12
【问题描述】:
我对 C 中的预处理器常量有一个小问题。我了解这种“变量”的目标是什么以及它是如何工作的。但是,我对他们的评估有一个小问题。让我们考虑一个小例子:
#define MY_VARIABLE 5
int main() {
int test1 = MY_VARIABLE*5;
int test2 = 5;
int test3 = MY_VARIABLE*test2;
}
在预处理步骤中,MY_VARIABLE 将在代码中替换为 5。我的问题是:test1 会在编译期间还是执行期间计算?在执行期间计算test3 是否正确?这个问题可能看起来有点奇怪和无用,但我正在研究一个程序,其中这种事情做了很多次,我想知道这种操作是否会减慢执行速度。
【问题讨论】:
-
test1)初始值在执行时没有评估。 test3)初始值在输出代码时不会通过推理在执行时进行评估。
-
我们说计算吧:)
-
其实你的问题根本不是关于预处理器常量评估,
-
你试试看效果如何 ;)
-
我不太确定我明白你的意思。你的意思是可执行文件不会计算任何东西吗?那么 test2 将在 test3 中被替换并计算 test3 ?
标签: c compilation c-preprocessor