В библиотеке atl часто при определении макросов встречается что-то вроде:
#define SOME_STRING int a = 0; (a);
Вопрос в том, зачем после определения переменной вставлено (a);
Чтобы не быть голословным — пример:
// atlconv.h
#define USES_CONVERSION int _convert = 0; (_convert); ...