我一直致力于在 C 中编写一些预处理器宏来帮助我完成工作。
# define printSTRING(s) printf( # s " has the value"); \
for( ; *s != '\0'; s++) \
printf(*s); \
getch();
我收到错误:C2105: '++' needs l-value
当我致电printSTRING(Payload);
时Payload
为char Payload[] = "wjdoidnjdeioejneiodejndo";
我认为它没有看到Payload
作为char指针,但我不知道如何解决这个问题。
答案 0 :(得分:4)
这不是他们唯一会得到的错误。您可能希望改为使用putchar()
,这需要一个char
参数(printf()
采用char *
格式字符串,您不会给它。或者,您可以使用puts()
打印整个字符串(在这种情况下不需要自己编写循环)。
您收到错误的原因是Payload
是数组的名称,而不是指针。虽然您可以使用数组的名称,就好像它是指向数组开头的指针一样,但您不能“递增”数组。
答案 1 :(得分:3)
'Payload'未声明为char 指针,但作为char 数组 - 您无法修改数组的地址。简单地使用
#define printSTRING(s) printf("%s has the value %s", #s, s)
代替。