c - 宏表达式不可赋值

标签 c macros c-preprocessor

编译时出现此错误:

macro.c:11:2: error: expression is not assignable
    ProdottoAumentato(10, 20);

我不知道为什么这么说,我找不到任何错误。 代码如下:

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>

#define ProdottoAumentato(X, Y)    X++; X * Y;

int main(void) {

    ProdottoAumentato(10, 20);

    printf("\nEnd\n");
    return(0);
}

最佳答案

宏执行文本替换。因此 ProdottoAumentato(10, 20); 被替换为以下内容:

10++; 10 * 20;;

10++ 无效。您无法修改文字,这就是错误消息“表达式不可分配”所指的内容。

How can I increment that value then?

您需要将值分配给变量才能修改它。请参阅 Vittorio Romeo 的回答以获取相关示例。

关于c - 宏表达式不可赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41442317/

相关文章:

c - 如何在C中将十六进制值分配给堆内存

macros - 我的 lisp 宏在最新版本中停止工作

macros - C 预处理器可以执行简单的字符串操作吗?

mysql.h : No such file or directory

c - 阶乘分解的错误输出

c++ - 使用二进制检测 Hook 函数

mysql - 如何在 SQL/Teradata 中创建宏变量?

algorithm - 使用宏进行符号计算

gcc - 变量值的字符串化

c - 进程的堆栈布局