C 如何解决此警告?
代码编译并运行,但我想处理警告C 如何解决此警告?,c,nios,microc,C,Nios,Microc,代码编译并运行,但我想处理警告 #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_STACKSIZ
#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);
或:
不知道INT32U的定义很难说,但您可能想要:
printf("Task Priority %d - Used: %u; Free: %u\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);
你可以用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所能容纳的值,这可能是一个问题。。。这将导致显示负值。我相信编译器试图告诉您,您的printf格式字符串需要一个有符号整数%d,但您给它的是一个无符号整数。如果是这样的话,您应该能够通过使用%u而不是%d来消除警告,或者通过将值强制转换为int来消除警告,如果值大于系统上签名的int所能容纳的值,这可能是一个问题。。。这将导致显示负值。INT32U建议未签名-尝试对此类值使用%u而不是%d。INT32U建议未签名-尝试对此类值使用%u而不是%d。