我想用浮點類型定義一個值;更確切地說,用squareroot函數。
它應該看起來像這樣#define hyp sqrt(pow(50,2) + pow(50,2))
。
但是對於這個值,它 似乎不是恆定的,所以我有一些警告和類型衝突。
由於什麼原因它不是恆定的?
浮點數是否始終在運行時生成,編譯時是否爲整數?
或者這是衝突的,因爲sqrt聲明必須在函數的某個範圍內?初始值設定元素不是常量(sqrt函數)
[編輯] 更清楚: 的警告是東陽與定義的開方值#define P + hyp
某些操作的 - 和我得到的警告。然後將P放入數組中,double arr_ps[] = {P,...}
。沒有與整數沒有問題,只是與sqrt-值[/編輯]
@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')
- 我得到其中三個。
爲什麼你甚至用preprocesser呢?它應該只是一個常量或內聯函數。 –
你能告訴你如何在代碼的其他地方使用'hyp'嗎? –
你可以展示一個簡潔的,自給自足的代碼示例嗎?我試圖複製你的問題,不能這樣做。我嘗試了幾種不同的方式,並沒有從'gcc'中描述的那種警告。 – Simon