std::cout << "LOCK_BYTES * 0: " << 0 * LOCK_BYTES << std::endl;
Расширяется до
std::cout << "LOCK_BYTES * 0: " << 0 * LOCK_NAME_BYTES + LOCK_TYPE_BYTES + PID_BYTES + TID_BYTES << std::endl;
, который, в свою очередь, расширяется до
std::cout << "LOCK_BYTES * 0: " << 0 * 256 + 1 + 4 + 4 << std::endl;
И с добавлением паренов для правил приоритета:
std::cout << "LOCK_BYTES * 0: " << ((((0 * 256) + 1) + 4) + 4) << std::endl;
, которыеоценивается как
std::cout << "LOCK_BYTES * 0: " << 9 << std::endl;
Измените свой код на
std::cout << "LOCK_BYTES * 0: " << 0 * (LOCK_BYTES) << std::endl;
Или, что еще лучше, используйте значения const unsigned int
:
const unsigned int NAME_BYTES = 256;
const unsigned int VERSION_BYTES = 256;
const unsigned int SIZE_BYTES = 32;
const unsigned int USED_LOCK_COUNT_BYTES = 32;
const unsigned int LOCK_NAME_BYTES = 256;
const unsigned int LOCK_TYPE_BYTES = 1;
const unsigned int PID_BYTES = 4;
const unsigned int TID_BYTES = 256;
const unsigned int LOCK_BYTES = LOCK_NAME_BYTES + LOCK_TYPE_BYTES + PID_BYTES + TID_BYTES;
const unsigned int HEADER_BYTES = NAME_BYTES + VERSION_BYTES + SIZE_BYTES + USED_LOCK_COUNT_BYTES;
Huzzah!И вдруг у тебя больше нет странных проблем.