#define 和一元‘*’的无效类型参数(有‘double’)

#define and invalid type argument of unary ‘*’ (have ‘double’)

刚开始写C++,卡在下面的代码上。在 Ubuntu 终端上,我尝试使用

进行编译
g++ -o circleArea circleArea.cpp

我收到错误:

circleArea.cpp: In function ‘int main()’:
circleArea.cpp:14:14: error: invalid type argument of unary ‘*’ (have ‘double’)
  area = PI * r * r;
              ^

密码是:

#include <iostream>

using namespace std;

#define PI 3.14159;
#define newLine "\n";

int main(void)
{
    double r;
    double area;
    cout << "Please enter the radius : ";
    cin >> r;
    area = PI * r * r;
    cout << "Area is " << area << " unit squares" << newLine;   
}

如果将行 "area = PI * r * r" 替换为 "area = 3.14159 * r * r",我不会收到任何错误。有什么问题,你能帮忙吗?

谢谢

#define PI 3.14159;,

area = PI * r * r;

变成

area = 3.14159; * r * r;

注意 3.14159* r 之间的额外 ;。就像

area = 3.14159;
* r * r;

因此第一个 * 被视为一元取消引用运算符。 您应该删除宏定义末尾的分号。