Синтаксис для непустых объектно-подобных макроопределений:
#define MACRO_IDENTIFIER REPLACEMENT
Обратите внимание, что в этом синтаксисе нет завершающей точки с запятой, в отличие от объявлений и операторов Си. Ваша точка с запятой стала частью ЗАМЕНЫ и была вставлена туда, где вы использовали идентификатор макроса, получив
char dataBuffer[500;];
, что является синтаксической ошибкой, диагностированной компилятором.