#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;