gpt4 book ai didi

c - C 编程中理解宏的问题

转载 作者:行者123 更新时间:2023-11-30 21:42:29 24 4
gpt4 key购买 nike

如果我将“1”作为输入,以下代码的输出是什么?为什么?

仅供引用::iam 使用 gcc 构建代码。

#include <stdio.h>
int main()
{
// k integer to hold user input
int k=0;

scanf("%d",&k);

switch(k)
{
case 1 :
#define first_case
break;
case 2 :
#define second_case
break;
case 3 :
#define third_case
break;
case 4 :
#define fourth_case
break;
}

#ifdeffirst_case printf("first_case\n"); #endif

#ifdef secondary_case printf("第二个案例\n"); #endif

#ifdef Third_case printf("第三个案例\n"); #endif

#ifdef Fourth_case printf("第四个案例\n"); #endif

}

最佳答案

宏 (#define MACRO ...) 在实际编译过程发生之前由 C 预处理器处理。

因此,只有在文件经过预处理后,编译器才会“看到”这一点:

int main()
{
// your code goes here
int k = 0;

scanf("%d", &k);
switch (k)
{
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
}

printf("typed first_case\n");
printf("typed second_case\n");
printf("typed third_case\n");
printf("typed fourth_case\n");
}

您可以这样编写程序,结果将完全相同:

#define first_case
#define second_case
#define third_case
#define fourth_case

/* Find the longest line among the giving inputs and print it */

#include <stdio.h>
int main()
{
// your code goes here
int k = 0;

scanf("%d", &k);
switch (k)
{
case 1:
printf("case 1\n");
break;
case 2:
break;
case 3:
break;
case 4:
break;
}


#ifdef first_case
printf("typed first_case\n");
#endif
#ifdef second_case
printf("typed second_case\n");
#endif

#ifdef third_case
printf("typed third_case\n");
#endif
#ifdef fourth_case
printf("typed fourth_case\n");
#endif

}

关于c - C 编程中理解宏的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47693860/

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