#define和unary'*'的无效类型参数(有'double')

Soa*_*nII 1 c++ c-preprocessor

刚开始编程C++,并坚持下面的代码.在Ubuntu终端上我尝试编译

g++ -o circleArea circleArea.cpp
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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

代码是:

#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;   
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢

tim*_*rau 7

随着#define PI 3.14159;,

area = PI * r * r;
Run Code Online (Sandbox Code Playgroud)

area = 3.14159; * r * r;
Run Code Online (Sandbox Code Playgroud)

注意额外;之间3.14159* r.就像是

area = 3.14159;
* r * r;
Run Code Online (Sandbox Code Playgroud)

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