Пробел после TstBit
кажется здесь проблемой. Препроцессор, в отличие от компилятора C, немного более требователен к пробелам.
В вашем макросе препроцессор заменяет все вхождения TstBit
на (Arr,b)
, что является не ваше намерение.
#define TstBit(Arr,b) ( Arr[b/8] & (1 << (b%8)) )
должно работать так, как вы хотите.
EDIT: Также обратите внимание, что существует проблема с тем, как вы пытаетесь использовать это макрос, как указано в этом комментарии !
Аргументы макроса в идеале не должны иметь побочных эффектов. Если они это сделают, вы должны позаботиться о том, чтобы они не привели к неопределенному или непреднамеренному поведению.