sprintf 未为 STM32 定义
sprintf is undefined for STM32
我正在为 Micropython 制作一个 cusermod,我正在尝试将十六进制格式的数字存储在字符串中。我尝试使用 sprintf
但是,我的编译器告诉我它未定义。我导入了 stdio.h
、string.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
,你会尝试删除这些选项以使示例更小。
我正在为 Micropython 制作一个 cusermod,我正在尝试将十六进制格式的数字存储在字符串中。我尝试使用 sprintf
但是,我的编译器告诉我它未定义。我导入了 stdio.h
、string.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
,你会尝试删除这些选项以使示例更小。