Вы пытаетесь скомпилировать код C ++ с помощью компилятора C, который не будет работать.
Очевидное решение состоит в том, чтобы вместо этого скомпилировать его с помощью компилятора C ++ (например, присвоив исходному файлу .cpp
extension).
Если по какой-то причине вы должны использовать компилятор C, то вам придется переписать функцию на C.
Для начала вы можете передать все эти const float
параметры по значениювместо ссылки (избавившись от &
).Я не знаю, почему они были ссылками.
Этот первый параметр (c
) используется в качестве выходного параметра, в который записывается результат.Поэтому вам придется изменить его со ссылки на указатель (например, unsigned int *c
).Или, что еще лучше, пропустите выходной параметр и попросите функцию вернуть его результат:
static int convert(const float temp1, const float temp2, const float temp3) {
unsigned int c;
if ( (temp3 * 6) < 1) c = (unsigned int) ((temp2 + (temp1 - temp2) * 6 * temp3) * 100);
else if ((temp3 * 2) < 1) c = (unsigned int) (temp1 * 100);
else if ((temp3 * 3) < 2) c = (unsigned int) ((temp2 + (temp1 - temp2) * (.66666 - temp3) * 6) * 100);
else c = (unsigned int) (temp2 * 100);
return c;
}
Код вызова:
r = convert(temp1, temp2, temp3);