Я хотел бы определить значение с помощью типа float; точнее, с функцией 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
Тогда у меня есть файл Си:
#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')
- и я получаю три из них.
Почему вы даже используете препроцессор для этого? Вероятно, это просто постоянная или встроенная функция. –
Можете ли вы показать, как вы используете 'hyp' в другом месте вашего кода? –
Можете ли вы показать краткий, самодостаточный пример кода? Я попытался воспроизвести вашу проблему и не мог этого сделать. Я попробовал пару разных способов и не получил никаких предупреждений о том, что вы описали из 'gcc'. – Simon