Рассмотрим следующий код:
#define A -100
//later..
void Foo()
{
int bar = -A;
//etc..
}
Теперь это прекрасно компилируется на некоторых основных протестированных мной компиляторах (MSVC, GCC, Clang) и bar == 100
как и ожидалось, это потому, что препроцессоры всех этих компиляторов вставляют пробел между токенами, так что вы получите:
int bar = - -100;
Поскольку я хотел бы, чтобы мой код был максимально переносимым, я решил проверить, определяется ли это поведение стандартом, но я ничего не могу найти в нем. Это поведение гарантировано стандартом или это просто функция компилятора и является наивным подходом (который явно не компилируется) bar = --100;
разрешено тоже?