На моем 8-битном микросхеме Freescale HCS08 всякий раз, когда я вызываю библиотечную функцию, которая возвращает значения указателям, я передаю ее, и я на самом деле не хочу их, я добавляю NULL, например,
UART_SendBlock((char *)txstr, strlen(txstr), NULL);
Тип последнего аргумента - uint16_t *
и возвращает количество фактически отправленных символов, значение, которое меня не волнует.
Однако у меня были проблемы с портом A на моем микро-шланге, который каждый раз вызывался при вызове этой функции, и отладка указывала мне на этот аргумент.Регистры конфигурации порта A находятся по адресам 0x0000 и 0x0001, где NULL
(он же (void *)0
) указывает.Я думал, что NULL
было каким-то волшебством, когда он на самом деле ничего не делал, но это не так.
Мой обходной путь кажется действительно взломанным:
#define MNUL (void *)(&mynull)
uint32_t mynull;
Есть ли лучшерешение?Я попытался определить MNUL для неиспользуемого сегмента памяти на моем процессоре, но это вызывает немедленный сброс.