我想定义一个浮点类型的值;更准确地说,使用平方根函数。
它应该看起来像这样#define hyp sqrt(pow(50,2) + pow(50,2))
。
但是对于这个值,它似乎不是恒定的,所以我有一些警告和类型冲突。
为什么它不是恒定的?
浮点数是否总是在运行时生成,而所有整数都在编译时生成?
或者这是因为 sqrt 声明必须在函数的某个范围内而产生冲突?
[编辑] 更清楚一点:警告是因为使用定义的 sqrt 值进行的某些操作#define P + hyp
- 为此我收到警告。然后将 P 放入一个数组中,double arr_ps[] = {P,...}
。整数没有问题,只需要那个 sqrt- 值。[/edit]
@Simon
我有一个头文件points.h:
#define x 10
#define y 10
#define distance 100
#define P1x x
#define P1y y
#define hyp sqrt(pow(50,2) + pow(50,2))
#define P1x_new P1x + distance
#define P1y_new P1y + hyp
然后我有c文件:
#include "points.h"
double arr_x[2]={P1x,P1x_new};
double arr_y[2]={P1y,P1y_new};
main(){
printf("Px: %f, Py: %f \n",arr_x[0],arr_y[0]);
printf("Px_new: %f, Py_new: %f \n", arr_x[1],arr_y[1]);
}
警告:initializer element is not constant (near initialization for 'arr_y')
- 我得到了三个。