这个c++函数宏定义有什么问题,总是通不过

来源:百度知道 编辑:UC知道 时间:2024/09/24 19:21:29
#include <iostream>
using namespace std;
#define PI 3.14159
#define AREA (X) ( (X) * (X) * PI )

void main () {
double radius;
cout<<"请输入半径值:";
cin>>radius;
cout<<"\n面积为:"<<AREA(radius)<<endl;
}
编译时显示: X未定义
难道函数宏的定义:
#define 宏名称(自变量) 定义内容
不对?

问题原因找到了
#define AREA (X) ( (X) * (X) * PI )
AREA (X)多了个空格,因为宏定义的时候空格相当于=号
谢谢各位

AREA (X)多了个空格,因为宏定义的时候空格相当于=号

X和PI一样. PI定义了.X没定义

宏定义只是将对应的字符替换.
因此
你这改就可以了.

#include <iostream>
using namespace std;
#define PI 3.14159
#define AREA(radius) ((radius) * (radius) * PI )
//这里的radius名字与你主函数定义的变量应该一致.因为此处((radius) * (radius) * PI )是要去替换主函数中的AREA(radius).

void main () {
double radius;
cout<<"请输入半径值:";
cin>>radius;
cout<<"\n面积为:"<<AREA(radius)<<endl;
}

#define AREA (X) ( (X) * (X) * PI )的问题

改成下面的就可以了
#include <iostream>
using namespace std;
#define PI 3.14159

void main () {
double radius;
cout<<"请输入半径值:";
cin>>radius;
AREA(radius)=(radius) * (radius) * PI
cout<<"\n面积为:"<<AREA(radius)<<endl;