Какая польза от определенного магического числа, за которым следует CRC - PullRequest
0 голосов
/ 14 января 2019

Меня бросили в существующий проект, где первоначального разработчика больше нет, и у меня нет опыта этого парня.

Поэтому, пересматривая код, я наткнулся на часть, где я вижу определенное магическое число, за которым следует CRC.

...
// Fill the structure.
oFactoryParams.u16MagicNumber = PARAMMGR_EEPROM_MAGIC_NUMBER_FACTORY_PARAMS;
...

// Calculate CRC.
oFactoryParams.u16CRC = CRCUtilCompute(sizeof(oFactoryParams) - 2, u16Dummy, (UINT8*)&oFactoryParams);

// Write.
u32NbByte = NEEPROMWrite32Bit(...Some params...)
...

Какая польза от этого магического числа? Это связано с КПР?

Спасибо

1 Ответ

0 голосов
/ 14 января 2019

Магические числа обычно используются, чтобы утверждать тип переданного указателя в языках без RTTI, чтобы обнаруживать ошибки, связанные с неверной типизацией, особенно если параметры передаются как void*.

CRC16 обычно используется в устаревших протоколах связи для проверки целостности данных после отправки по последовательным линиям.

Так что я могу изобразить ситуацию, когда ваша структура отправляется непосредственно в socket / tty с помощью send(s, &val, sizeof(val));, и в этом случае CRC16 может быть полезно.

Итак, в заключение, эти поля можно использовать для подтверждений / проверок на разных уровнях

...