我必须在C语言中做类似的事情.它只在我使用char时有效,但我需要一个字符串.我该怎么做?

#define USER "jack" // jack or queen

#if USER == "jack"
#define USER_VS "queen"
#elif USER == "queen"
#define USER_VS "jack"
#endif

推荐答案

我不认为有一种方法可以完全在预处理器指令中进行可变长度字符串比较.不过,您或许可以执行以下操作:

#define USER_JACK 1
#define USER_QUEEN 2

#define USER USER_JACK 

#if USER == USER_JACK
#define USER_VS USER_QUEEN
#elif USER == USER_QUEEN
#define USER_VS USER_JACK
#endif

或者你可以重构一下代码,改用C代码.

C++相关问答推荐

Bison解析器转移/减少冲突

变量的const视图是否定义良好?

正在try 将文件/文件夹名从目录 struct 存储到链接列表

测量ARM MCU中断延迟的问题

非常大的数组的大小

C++中矢量类型定义和数据保护的高效解决方案

如何编写一个for循环来计算C中各项的总和?

在C++中允许使用字符作为宏参数

链表删除 node 错误

在C程序中使用Beaglebone Black UART的问题

如何在zOS上编译共享C库

c程序,让用户输入两类数字,并给出输出用户输入多少个数字

我编写这段代码是为了判断一个数字是质数、阿姆斯特朗还是完全数,但由于某种原因,当我使用大数时,它不会打印出来

可以';t从A9G模块拨打电话

如何编写postgresql支持函数

';malloc():损坏的顶部大小';分配超过20万整数后

关于不同C编译器中的__attribute__支持

函数指针作为函数参数 - 应该使用 const 吗?

GnuCobol 使用 double 类型的参数调用 C 函数

获取 struct 中匿名 struct 的大小