Я пишу код для крошечного 8-битного микроконтроллера с несколькими байтами ОЗУ. У него простая задача - передать 7 16-битных слов, а затем CRC этих слов. Значения слов выбираются во время компиляции. CRC, в частности, является «остатком от разделения от слова 0 до слова 6 как беззнакового числа, деленного на многочлен x ^ 8 + x² + x + 1 (начальное значение 0xFF) ».
Можно ли вычислить CRC этих байтов во время компиляции, используя C препроцессор?
#define CALC_CRC(a,b,c,d,e,f,g) /* what goes here? */
#define W0 0x6301
#define W1 0x12AF
#define W2 0x7753
#define W3 0x0007
#define W4 0x0007
#define W5 0x5621
#define W6 0x5422
#define CRC CALC_CRC(W0, W1, W2, W3, W4, W5, W6)