C++ #define 和常量变量相乘时出错

C++ error when multiplying #define and const variable

本文关键字:出错 变量 #define 常量 C++      更新时间:2023-10-16
#include <iostream>
#include<Windows.h>
#define LENGTH 10;
#define NEWLINE 'n'
using namespace std;
int main(){
    int area;
    const int WIDTH=20;
    area=LENGTH*WIDTH;   
    cout<<area<<NEWLINE;
    system("pause");
}

错误在计算面积的行,它说"

* 的操作数必须是指针

不应使用 ; 终止宏定义。否则,表达式将扩展为:

area=10;*WIDTH;

现在错误是有道理的,对吧?

#define LENGTH 10;

应该是

#define LENGTH 10
//               ^ no trailing ;

目前,预处理器将您的代码扩展到

area=10;*WIDTH;
//     ^ error
永远不要用

分号终止宏。

#define LENGTH 10

是你需要的。

是简单的文本替换。

您的宏LENGTH将扩展到令牌10;

那么你在main中的陈述实际上是两个陈述:

area = LENGTH; *WIDTH

这试图取消引用WIDTH,它不是指针,因此不能取消引用。

您的定义包括一个分号,该分号通常会结束语句。

#define LENGTH 10;

删除分号。

LENGTH 宏中存在错误,请删除分号。

好: #define LENGTH 10

使用std::endl进行回车。

std::cout<< area << std::endl;