[英]How can I resolve this warning?
代码可以编译并运行,但是我想处理警告。
#include <stdio.h>
#include "includes.h"
#include <string.h>
#define DEBUG 1
/* Definition of Task Stacks */
/* Stack grows from HIGH to LOW memory */
#define TASK_STACKSIZE 2048
OS_STK task1_stk[TASK_STACKSIZE];
OS_STK task2_stk[TASK_STACKSIZE];
OS_STK stat_stk[TASK_STACKSIZE];
/* Definition of Task Priorities */
#define TASK1_PRIORITY 6 // highest priority
#define TASK2_PRIORITY 7
#define TASK_STAT_PRIORITY 12 // lowest priority
void printStackSize(INT8U prio)
{
INT8U err;
OS_STK_DATA stk_data;
err = OSTaskStkChk(prio, &stk_data);
if (err == OS_NO_ERR)
{
if (DEBUG == 1)
printf("Task Priority %d - Used: %d; Free: %d\n",
prio, stk_data.OSFree, stk_data.OSUsed);
}
else
{
if (DEBUG == 1)
printf("Stack Check Error!\n");
}
}
不知道INT32U
的定义很难说,但是您可能想要:
printf("Task Priority %d - Used: %u; Free: %u\n",
prio, stk_data.OSFree, stk_data.OSUsed);
要么:
printf("Task Priority %d - Used: %lu; Free: %lu\n",
prio, stk_data.OSFree, stk_data.OSUsed);
您可以使用inttypes.h
尝试。 该头定义了固定整数的所有打印和扫描说明符。
所以这
printf("Task Priority %d - Used: %u; Free: %u\n",
prio, stk_data.OSFree, stk_data.OSUsed);
成为
printf("Task Priority %d - Used: %" PRIu32 "; Free: %" PRIu32 "\n",
prio, stk_data.OSFree, stk_data.OSUsed);
我相信编译器会试图告诉您,您的printf格式字符串期望带符号的整数(%d),但您却给了它一个无符号的整数。 如果是这样,您应该可以通过使用%u(而不是%d)或将值强制转换为(int)来摆脱警告(如果值大于有符号的int可以的话,可能会成为问题。保持系统...这将导致显示负值)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.