Я получаю следующее предупреждение:

/path/to/project/src/my_main.c:24:36: предупреждение: цели указателя при инициализации 'const uint8_t *' {aka 'const unsigned char *'} из 'char *' отличаются подписью [-Wpointer- знак]

Для следующей строки:

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

Где uint8_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

Почему я получаю это предупреждение и как его удалить?

1
BitFreak 8 Окт 2020 в 01:31

1 ответ

Лучший ответ

Строковые литералы - это массивы символов, которые распадаются на char *

Вам нужно добавить приведение, чтобы подавить предупреждение

const uint8_t* REQUPDATE_WARNING = (uint8_t *)"{\"id\":\"warning\",\"value\":\"mcu_upd\"}\n";
1
0___________ 7 Окт 2020 в 23:43