sprintf 未为 STM32 定义

sprintf is undefined for STM32

我正在为 Micropython 制作一个 cusermod,我正在尝试将十六进制格式的数字存储在字符串中。我尝试使用 sprintf 但是,我的编译器告诉我它未定义。我导入了 stdio.hstring.h 以及为 STM32 芯片开发 cusermod 所需的其他一些库,但我不明白为什么 sprintf 没有定义???我只在使用格式说明符时遇到过这个问题...

这是我的代码!

int chks = checksum(mns);

char checksum[10] = "*";
char temp[6]; 
sprintf(temp, "%x\r\n",chks);
strcat(checksum,temp);

char str[23] = "$";
strcat(str,mns);
strcat(str,checksum);
strcpy(mns,str);

我用过 printf,即使我使用格式说明符也能正常工作。有没有人有类似的问题或知道如何解决它?

两个 地方,你的 Makefile 有 -nostdlib 标志,告诉 linker 在 C 标准中不要 link库,提供 sprintf.

之类的东西

将来,您可以通过准备 minimal reproducible example 来自己捕获此类问题,包括用于编译示例的最小命令。由于编译命令是最小的,你很容易看到可疑的选项,如 -nostdlib,你会尝试删除这些选项以使示例更小。