AT45Status
- это структура с несколькими членами, и у меня есть следующая функция:
/**
* @brief read the chip status from the flash chip
* @retval a pointer to the current status of the chip
*/
AT45Status const * const ReadChipStatus(void) {
uint8_t commands[1] = {STATUS_READ};
static AT45Status status;
//// … details, but the result is updated values inside status
return &status;
}
Я получаю следующее предупреждение, если скомпилирую это с использованием C ++:
…(16): предупреждение: # 815-D: спецификатор типа для возвращаемого типа не имеет смысла
Я, конечно, посмотрел точное объяснение , и это важное предупреждение для тривиальноготип, который является семантически переданным значением. Но я возвращаю указатель на объект, который я не хочу менять. (указатель или данные, на которые указывает). Таким образом, спецификатор типа имеет смысл.
Предупреждения исчезают, когда я изменяю инструкцию return на:
return (AT45Status const * const)&status;
Почему компилятор не может / неявно не привести AT45Status*
в AT45Status const * const
? Чего мне не хватает в этом взаимодействии?