Разница поведения макроса в зависимости от компилятора
Данный макрос работает без ошибок под компилятором g++
#define ASSIGN_VAR_RN(var, size, buf) \
({\
for (int i = sizeof(var) - 1; i >= 0; i--) {\
var |= buf[i]; \
if (i != 0) \
var <<= 8; \
size++;\
}\
})
Но выдает следующие ошибки, если попробовать запустить под Microsoft Visual C++ Compiler
source_file.cpp(34): error C2059: syntax error: '{'
source_file.cpp(34): error C2143: syntax error: missing ';' before '{'
source_file.cpp(34): error C2059: syntax error: ')'
Функция запуска выглядит следующим образом
int main()
{
char a[] = "hello world";
int b = 0;
int size = 0;
ASSIGN_VAR_RN(b, size, a); // строка 34 с ошибками выше
std::cout << std::hex << b << endl;
}