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

时间:2015-01-08 07:17:10

标签: c++ c-preprocessor

刚开始编程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;   
}

如果更换线路&#34; area = PI * r * r&#34;与&#34; area = 3.14159 * r * r&#34;我没有收到任何错误。有什么问题,你能帮忙吗?

谢谢

1 个答案:

答案 0 :(得分:7)

使用#define PI 3.14159;

area = PI * r * r;

变为

area = 3.14159; * r * r;

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

area = 3.14159;
* r * r;

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