在我的 8 位 Freescale HCS08 micro 上,每当我调用一个返回值到指针的库函数时,我都会传递它,但我并不真正想要它们,我输入了一个 NULL,例如
UART_SendBlock((char *)txstr, strlen(txstr), NULL);
最后一个参数的类型是 uint16_t *
并返回实际发送的字符数,我不关心这个值。
但是,每次调用该函数时,我的微型计算机上的端口 A 都会出现问题,并且调试将我指出该论点将事情搞砸了。端口 A 的配置寄存器位于地址 0x0000 和 0x0001,这是NULL
(aka (void *)0
) 指向的位置。我认为NULL
这是某种魔法,它实际上不会做任何事情,但似乎并非如此。
我的解决方法感觉真的很hack:
#define MNUL (void *)(&mynull)
uint32_t mynull;
有更好的解决方案吗?我尝试将 MNUL 定义为处理器上未使用的内存段,但这会导致立即重置。