gpt4 book ai didi

在 c 中使用 #if 创建程序模式

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

我正在尝试使用 #if#define 为程序创建两种模式,但第二种模式不起作用,这是为什么?如果您能提出更好的方法,我将不胜感激。

这是我的代码:

#include "Types.h"
#include <stdio.h>


void main (void)
{
u32 m;
u32 flag = 1;
do
{
printf("\nWelcome\nPress 1 for Admin mode\nPress 2 for User Mode\nYour Choice:");
scanf("%d",&m);
if (m==1)
{
#define m 1
flag = 0;
}
else if (m==2)
{
#define n 2
flag = 0;
}
else
{
printf("\nInvalid number \nPlease Try again");
}
}while(flag);

//using conditional directive to run only the portion of the code for the slected mode
#if m==1
printf("Welcome to admin mode");

#elif n==2
printf("Welcome to user mode");

#endif
}

最佳答案

#define 和 ifs 是预处理器宏的一部分。考虑它们的一种方法是想象编译器遍历您的文件并在其中剪切和粘贴作为编译的早期步骤。例如,当您将 PI 定义为 3 时,它会在您编写 PI 的代码中的任何位置粘贴 3。然后这告诉我们,在运行程序时,我们进入 m == 1 或 2 的哪个分支并不重要 - 所有预处理器编辑都已经完成!

在特定模式下构建程序的一种方法是在编译时使用标志,例如 -D DEBUG。请注意,我们不能使用它来选择已编译程序中的模式。

预处理器选项: -D= 添加一个隐式#define 到预定义缓冲区中,该缓冲区在源文件被读取之前被读取 预处理。

关于在 c 中使用 #if 创建程序模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697612/

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