我正在尝试在Keil中使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="payverlink" href="exbronzeregistrationform.php">Continue to registration</a>
<button class="goldpac">Choose Plan</button>
<button class="silverpac" onclick="silver()">Choose Plan</button>
<button class="bronzepac" onclick="bronze()">Choose Plan</button>
函数。但我有恼人的警告。让我用下面的示例代码部分解释我的警告。当我调试时,我得到;
警告:#167-D:类型&#34; uint8_t *&#34;的参数与&#34; char * restrict&#34;
类型的参数不兼容
它警告我关于格式类型的信息。
我知道sprintf功能不是一个好的解决方案,但我真的很想知道为什么这个警告会显示出来?
由于
sprintf();
答案 0 :(得分:1)
修正警告:
您有两种选择:将str
声明为char
,或使用类型转换:
sprintf((char *) str, "%9ld", s_value);
优化代码
你有一个循环的唯一原因是用零初始化str
数组。以下是以简单,可读的方式执行此操作的代码,无需代码开销:
char str[9] = {0};
修复您的代码:
文件摘录:
格式说明符遵循此原型:
%[标志] [宽度] [精度] [长度]说明符
...
宽度:
最小要打印的字符数。如果要打印的值小于此数字,则结果将填充空格。即使结果较大,也不会截断该值。
这意味着您的代码最终将获得缓冲区溢出并将崩溃。使用snprintf
!
答案 1 :(得分:0)
uint8_t
和char
不一定是一回事。通常它的类型定义为unsigned char
。