为什么gcc arm none eabi会收到此警告

为什么gcc arm none eabi会收到此警告,c,arm,constants,gcc-warning,C,Arm,Constants,Gcc Warning,我得到以下警告: /path/to/project/src/my_main.c:24:36:警告:初始化'const uint8_t*'{aka'const unsigned char*}与'char*'时的指针目标在符号性上不同[-Wpointer sign] 对于以下行: const uint8_t* REQUPDATE_WARNING = "{\"id\":\"warning\",\"value\":\"mcu

我得到以下警告:

/path/to/project/src/my_main.c:24:36:警告:初始化'const uint8_t*'{aka'const unsigned char*}与'char*'时的指针目标在符号性上不同[-Wpointer sign]

对于以下行:

const uint8_t* REQUPDATE_WARNING = "{\"id\":\"warning\",\"value\":\"mcu_upd\"}\n";
其中
uint8\u t
为:

(stdint.h):
#ifndef _UINT8_T_DECLARED
typedef __uint8_t uint8_t ;
#define _UINT8_T_DECLARED

(_default_types.h)
#ifdef __UINT8_TYPE__
typedef __UINT8_TYPE__ __uint8_t;
#else
typedef unsigned __INT8_TYPE__ __uint8_t;
#endif

为什么会收到此警告以及如何删除它?

字符串文字是字符数组,它们会衰减为
char*

您需要添加强制转换以抑制警告

const uint8_t* REQUPDATE_WARNING = (uint8_t *)"{\"id\":\"warning\",\"value\":\"mcu_upd\"}\n";

uint8\u t*
表示字符串没有多大意义。为什么需要它而不是
const char*