Заголовок stdint.h
в моей компании гласит:
#define INT64_MIN -9223372036854775808LL
Но в каком-то коде моего проекта программист написал:
#undef INT64_MIN
#define INT64_MIN (-9223372036854775807LL -1)
Затем он использует это определение в коде.
Проект компилируется без предупреждений/ошибок.
Когда я попытался удалить его определение и использовать определение по умолчанию, я получил:
error: integer constant is so large that it is unsigned
Два определения кажутся эквивалентными.
Почему одно компилируется нормально, а другое нет?