c - 宏函数指针问题

标签 c macros c-preprocessor

我一直致力于用 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 视为字符指针,但我不知道如何解决这个问题。

最佳答案

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

您收到错误的原因是 Payload数组 的名称,而不是指针。您不能“递增”数组,尽管您可以将数组名称用作指向数组开头的指针。

关于c - 宏函数指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11440663/

相关文章:

c - 如何获取用户输入的字符,并将其放置在某个内存位置?

c++ - 隐式构建规则: GNU Make Multiple Makefiles Multiple Directories

opengl - GLSL 宏扩展可以做到这一点吗?

c++ - 如何驯服 Windows header (有用的定义)?

c - 使用#define 为结构成员起别名

c - 无符号整数的 atoi 等价物

"address of"字符指针数组的正确 C 语法?

ios - 出于单元测试目的,检测 iOS 应用程序是否正在运行没有预处理器宏的调试或发布版本?

c++ - 将宏参数与文本连接起来

你能为条件编译定义一个函数风格的宏吗?