#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");
}
错误位于计算区域的行,它表示“
*的操作数必须是指针
答案 0 :(得分:7)
您不应使用;
终止宏定义。否则表达式将扩展为:
area=10;*WIDTH;
现在这个错误是有道理的,对吧?
答案 1 :(得分:3)
#define LENGTH 10;
应该是
#define LENGTH 10
// ^ no trailing ;
目前,预处理器将代码扩展为
area=10;*WIDTH;
// ^ error
答案 2 :(得分:2)
永远不要用分号终止宏。
#define LENGTH 10
是你需要的。
答案 3 :(得分:2)
宏是简单的文本替换。
您的宏LENGTH
会扩展为代币10;
。
然后你在main
中的陈述实际上是两个陈述:
area = LENGTH; *WIDTH
这会尝试取消引用WIDTH
,它不是指针,因此无法解除引用。
答案 4 :(得分:1)
您的定义包括一个分号,通常会以语句结束。
#define LENGTH 10;
删除分号。
答案 5 :(得分:0)
LENGTH宏中存在错误,请删除分号。
好:#define LENGTH 10
使用std::endl
进行回车。
std::cout<< area << std::endl;