#ifdef的简单问题

来源:百度知道 编辑:UC知道 时间:2024/07/06 15:25:57
#include "stdio.h"
#define pi 3.14
#define V(r) 4.0/3*pi*(r)*(r)*(r)
main()
{ double r,v,s;
scanf ("%lf",&r);
#ifdef V
v=V(r);
printf("the V=%lf\n",v);
#else
s=4*pi*r*r;
printf("Area=%lf\n",s);
#endif
}
书上写的,当标示符已经被定义过(一般是用#define命令定义),则对程序段1进行编译.否则编译程序2
书上前半句的意思是如果#define V(r) 4.0/3*pi*(r)*(r)*(r)这个了,那么输入数字后就求V(r)了?那后句又是什么意思?

#define V(r) 4.0/3*pi*(r)*(r)*(r) 这句是定义一个函数V(r),程序里面遇到V(r)的时候,自动换成4.0/3*pi*(r)*(r)*(r) 。
所以程序里面会预编译#ifdef V后面的内容。因为V(r)是函数,所以将#ifdef V换成#ifdef V(r)一样。