0

我一直致力于用C 语言编写一些预处理器宏来帮助我完成工作。

            # define    printSTRING(s) printf( # s " has the value");   \
                        for( ; *s != '\0'; s++) \
                        printf(*s); \
                        getch();

我收到错误消息:C2105: '++' needs l-value

当我打电话时在printSTRING(Payload);哪里Payloadchar Payload[] = "wjdoidnjdeioejneiodejndo";

我认为它没有Payload被视为 char 指针,但我不知道如何解决这个问题。

4

2 回答 2

4

这不是你会得到的唯一错误。您可能想putchar()改用它,它采用单个char参数(printf()采用char *格式字符串,您没有提供它)。或者,您可以使用puts()which 打印整个字符串(在这种情况下无需自己编写循环)。

您收到错误的原因是数组Payload的名称,而不是指针。您不能“增加”数组,尽管您可以使用数组的名称,就好像它是指向数组开头的指针一样。

于 2012-07-11T20:12:39.870 回答
3
  1. 你在滥用 printf - 这就是为什么 '%s' 格式说明符在这里。
  2. 'Payload' 没有声明为 char指针,而是声明为 char数组——您不能修改数组的地址。简单使用

    #define printSTRING(s) printf("%s has the value %s", #s, s)
    

反而。

于 2012-07-11T20:14:13.853 回答