Здравствуйте, уважаемые коллеги, помогите пожалуйста. В функции мне нужно знать количество элементов массива, делаю это с помощью макроса SizeObj, а он в данной функции не работает. Компилятор - Кейл. Можно было бы передавать размер массива в саму функцию, но это не то. Вызывается эта функция часто и для массивов разной длины, потому хотелось лаконичнее, да еще бы с передачей в функцию указателя на массив, но по указателю на массив я не могу определить размер. Как бы решить эту задачку.
Код
typedef struct
{
int X;
int Y;
char dX;
char dY;
} TG_Buttons;
TG_Buttons G_But [] = {
Bt_Menu_X, Bt_Menu_Y, Bt_Menu_L, Bt_Menu_H,
Bt_Prn_X, Bt_Prn_Y, Bt_Prn_L, Bt_Prn_H,
Bt_Rec_X, Bt_Rec_Y, Bt_Rec_L, Bt_Rec_H
};
#define SizeObj(a) (sizeof(a) / sizeof(a[0]))
void Set_Arr_But (TG_Buttons G_Bt [])
{ INT16U i;
TG_Buttons *pG_But = &G_Bt [0];
float k_Y;
k_Y = (float)Max_TSC_Y / LCD_YSIZE;
for (i=0; i < SizeObj(G_Bt); i++)
{
pG_But->Y = ceil ((pG_But->Y + pG_But->dY/2) * k_Y); //
pG_But ++;
}
} // Set_Arr_Buttons (void)