【发布时间】:2017-12-07 11:16:31
【问题描述】:
如果我将“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;
}
#ifdef first_case printf("first_case\n"); #endif
#ifdef second_case printf("second_case\n"); #endif
#ifdef 第三个案例 printf("第三种情况\n"); #endif
#ifdef 第四种情况 printf("第四种情况\n"); #endif
}
【问题讨论】:
-
您需要了解预处理器宏是什么。我建议开始阅读你的 C 教科书。
-
预处理器是纯编译时的东西。它在运行时不做任何事情。
-
我投票结束这个问题,因为不理解该语言的基本语法并不能提出有用的问题,也不能证明预期的背景研究水平。
-
要了解如何评估宏,请将
-E添加到编译器命令行以查看预处理器输出的内容,即编译器实际编译的内容。 -
请使用
-E编译您的代码,例如gcc -E myfile.c并查看输出。这正是 C 编译器“看到”的-E强制“仅预处理器”编译。