gpt4 book ai didi

C 预处理器宏

转载 作者:行者123 更新时间:2023-11-30 19:16:30 26 4
gpt4 key购买 nike

我有一个关于 C 编程中的宏的问题。我对宏的了解是,它们是预处理器指令,在编译阶段之前完成并被删除。所以我编写了一段代码来测试它,但它在编译阶段后仍然有效:

#define SWAP(x,y) {int temp; temp = *x;*x = *y;*y=temp;}

int main()
{
int data1, data2;
while((scanf("%d%d",&data1,&data2)) == 2)
{
SWAP(&data1,&data2);
printf("Data1 =%d, data2 = %d\n",data1,data2);
}
}

我不知道为什么这段代码仍然有效。

最佳答案

因为宏做了它应该做的事情。预处理器拿走了线

SWAP(&data1,&data2);

并将其替换为

{int temp; temp = *data1;*data1 = *data2;*data2=temp;};

然后将其提供给编译器,编译器完成了它的工作,并且您的程序可以运行。

宏是编译前发生的文本替换。

关于C 预处理器宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082567/

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