Открываешь 3 скобку, но близко к этому только 2.
#define isPowerof2(n) (!(n & (n-1)))
но есть еще одна ошибка. Вы должны добавить круглые скобки вокруг своих макропараметров, иначе у вас могут быть сюрпризы.
#define isPowerof2(n) (!((n) & ((n)-1)))
EDIT: Пример ошибки
Invoke
isPowerOf2(34 >> 1) which is not a power of 2
потерпит неудачу, потому что в вашем случае без скобок, она будет расширяться по мере
(!(34 >> 1 & (34 >> 1-1)))
(!(17 & (34 >> 0)) // shift is lower priority than subtraction
(!(17 & 34))
(!0)
1
, который, очевидно, неверно ,
Реальное значение с фиксированной макрокомандой
(!((34 >> 1) & ((34 >> 1)-1)))
(!(17 & (17-1)) // shift is lower priority than subtraction
(!(17 & 16))
(!16)
0
Между прочим, выражение в 'isPowerof2' будет означать, что нуль является степенью два, что неправильно. –