gpt4 book ai didi

条件编译#ifdef

转载 作者:太空宇宙 更新时间:2023-11-04 05:27:49 24 4
gpt4 key购买 nike

我正在尝试理解 #ifdef 宏。下面的示例代码。

getval(int val)
{
if(val==0) {
#ifndef PKT
#define PKT
#endif
}
}
main() {
getval(0);
#ifdef PKT
printf("Packet\n");
#endif
}

即使我将 1 传递给 getval,我也会得到输出 Packet。为什么在 val=1 时未定义 PKT 时我得到输出?谢谢。

最佳答案

# 指令是编译时而非运行时。所以你通过什么并不重要。如果定义了宏 PKT,则打印“Packet”,否则不打印。

如果您正在运行 gcc,您可以执行 gcc -E myfile.c 并在预处理后检查结果。

如果您从 getval 函数中删除了一堆预处理器指令,则不会打印“数据包”,因为在那种情况下 PKT 未定义,并且因此 #ifdef PKT 为假,printf 未到达编译器。

关于条件编译#ifdef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17804373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com