Nikolay_Po (04.05.2019 21:27 - 21:29, просмотров: 216) ответил VLLV на Попозже. Но в коде (достался по наследству) есть примечание "IAR 6.60.02 берет не указатель, а значение". Т.е. я не придумал. Использую 7.80.
Попробуйте так: typedef union { //Storage union for uint32_t byte access
uint32_t Value; //32-bit value in native form
uint8_t Bytes[sizeof(uint32_t)]; //32-bit value as a byte array
}my_const_t;
volatile const my_const_t my_const = {0xDEADC0DE};
Вызов:
return CRC(my_const.Bytes,4);
Проверил, в XC16 компилируется без предупреждений. Компилятор не виноват.
В приведённом примере у компилятора есть информация о размере данных под указателем Bytes. Соответственно, будет меньше поползновений оптимизировать массив (указатель) до значения.