我一直致力于用 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
视为字符指针,但我不知道如何解决这个问题。
最佳答案
这不是他们唯一会得到的错误。您可能想改用 putchar()
,它接受一个 char
参数(printf()
接受一个 char *
格式字符串,你没有给它)。或者,您可以使用打印整个字符串的 puts()
(在这种情况下无需自己编写循环)。
您收到错误的原因是 Payload
是数组 的名称,而不是指针。您不能“递增”数组,尽管您可以将数组名称用作指向数组开头的指针。
关于c - 宏函数指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11440663/