Ошибка компилятора VS2013 с символом #define в вызове функции
В следующем коде:
#define VMIN -210.0f #define VMAX 220.0f #define coef_a (0.5f*(VMIN+VMAX)) #define coef_b_green (510.0f/(VMAX-VMIN)) #define coef_b_red (510.0f/(VMIN-VMAX)) //#define LIMITUCHAR(a) ((a) < (255) ? (a) : 255) uchar limit_uchar(float x) { if (x<255.5f) { if (x<0) return (uchar) 0; else return (uchar) x; } else return (uchar) 255; } /* Generates a color as a function of v: if v<vmed, assign red, if v>vmed assign green At the middle color=black */ void assigncolor(float v,uchar color[3]) { color[0]=0; color[1]=limit_uchar((v-coef_a)*coef_b_green); color[2]=limit_uchar((v-coef_a)*coef_b_red); }
Следующая строка генерирует ошибку компиляции из-за coef_b_green должны быть изменяемые значения
color[1]=limit_uchar((v-coef_a)*coef_b_green);
Как я могу этого избежать?
Что я уже пробовал:
Это нормально. coef_b_red не создает проблем:
void assigncolor(float v,uchar color[3]) { color[0]=0; color[1]=limit_uchar((v-coef_a)*510.0f/(VMAX-VMIN)); color[2]=limit_uchar((v-coef_a)*coef_b_red); }
Я также пробовал разные уровни бракета