OrE*_*lse 3 c embedded visual-studio-code platformio
在嵌入式项目上工作时,我注意到sprintf()
以下代码的方法:
char ln2[16];
sprintf(ln2, "%f Volt", Data[Position].Voltage1);
Run Code Online (Sandbox Code Playgroud)
生成问号字符作为输出。
从上面的代码生成的输出是:
? Volt
Run Code Online (Sandbox Code Playgroud)
而输入声明为 double Voltage1 = 0.0;
尝试格式化整数时,似乎不存在相同的问题。
预期的工作如下:
char ln1[16];
sprintf(ln1, "POSITION %d", (Position + 1));
Run Code Online (Sandbox Code Playgroud)
并输出POSITION 3
其中的Position
是全局变量并声明为int
。
实际保存数据的结构是:
struct data
{
int Position;
double Voltage1;
double Voltage2;
};
Run Code Online (Sandbox Code Playgroud)
以上全部针对VS Code 使用C / C ++ 和Platform.io扩展。
这是怎么了?
嵌入式版本的printf通常不实现浮点数处理。您需要让链接器链接正确版本的函数。例如,对于ARM gcc,它将为-u _printf_float
or / and-u _scanf_float
归档时间: |
|
查看次数: |
98 次 |
最近记录: |