Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何解决此警告?_C_Nios_Microc - Fatal编程技术网

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。