将#define和const变量相乘时出现C ++错误

时间:2014-01-03 15:07:47

标签: c++ const

#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");
}

错误位于计算区域的行,它表示“

  

*的操作数必须是指针

6 个答案:

答案 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;