如何在预处理中比较字符串?

lpheni 2006-06-22 04:33:38
RT
...全文
940 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
我啃 2006-08-05
  • 打赏
  • 举报
回复
Banned(bannedlqd@gmail.com) ( ) 信誉:100 2006-8-4 21:55:54 得分: 0
说得比较对

SamuelKevin(曼陀罗) ( ) 信誉:100
你的程序,看似用了很多宏替换出来还是使用运行期的函数艾!
strcmp(a,b)
我啃 2006-08-05
  • 打赏
  • 举报
回复
看了楼上许多的代码,觉得你们是不是不懂什么叫编译期完成比较啊??
总的来说C编译期完成东西只能用宏,(功能限制很大)
楼主的功能好像不能实现要实现也是很烦的宏潜逃
要用传说中的C++ META PROGRAMME来解循环完成
netxuning 2006-08-05
  • 打赏
  • 举报
回复
mark
xiantongyuan 2006-08-05
  • 打赏
  • 举报
回复
一般来说:预处理只能用来实现一些简单的功能,如宏替换,条件编译,简单的函数替换等这些简单的功能。如果需要实现功能较大的,就不能用预处理了 。
Banned 2006-08-04
  • 打赏
  • 举报
回复
不行,预处理没有这么强大,除非自己实现预处理器。

C/C++的预处理主要是三个功能:1 宏替换 2 条件编译 3 文件包含

在条件编译中#if 后面跟的是整形常量表达式,不存在字符串比较的情况。
lpheni 2006-06-23
  • 打赏
  • 举报
回复
可不可以构造比较字符串的预处理表达式?
Cody2k3 2006-06-23
  • 打赏
  • 举报
回复
不能, 你可以比较整数,比如
#define A 3
#define B 4
int func(void){
#if A==B
return 3;
#else
return 4;
#endif
}

你可以把你的字符串改成整数
lpheni 2006-06-23
  • 打赏
  • 举报
回复
可以这样吗?
#if fun(str1, str2)
SamuelKevin 2006-06-22
  • 打赏
  • 举报
回复
貌似酱紫??
#include <stdio.h>
#include <string.h>
#define string_A(SA) # SA
#define string_B(SB) # SB
#define FLAG(a,b) strcmp(a,b)

int main()
{
printf("%d\n", FLAG(string_A(aabv),string_B(vbsk)));
printf("%d\n", FLAG(string_A(aabv),string_B(aabv)));
printf("%d", FLAG(string_A(aabv),string_B(aaav)));
return 0;
}

output
-1
0
1
kevinkw 2006-06-22
  • 打赏
  • 举报
回复
为啥要在预处理中比较字符串?
happytang 2006-06-22
  • 打赏
  • 举报
回复
构造比较字符串的预处理表达式?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧