【发布时间】:2017-09-18 14:55:41
【问题描述】:
我可以在 strcmp 中比较#definevarible 和char *,如下所示。
#include<stdio.h>
#include<string.h>
#define var "hello"
int main()
{
char *p ="hello";
if(strcmp(p,var)==0)
printf("same\n");
else
printf("not same\n");
return 0;
}
#define和char *如上例有什么风险吗?
【问题讨论】:
-
好吧,这个例子不会编译,所以我猜有这个风险
-
不,预处理器只是用文字替换您的标记(也就是说,如果标记与文字匹配,您的代码中不是这种情况)
-
@UnholySheep 我现在编辑这将编译
-
var的名称非常令人困惑。它不是一个变量。按照惯例,宏名称通常都是大写的,例如#define FOO "hello" -
阅读C preprocessor上的维基页面;然后阅读documentation of
cpp并参考preprocessor。你看起来很困惑!