ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
13 ноября
1553373 Топик полностью
VVB (10.11.2025 13:07, просмотров: 106) ответил AlexBi на Очередная попытка перехода на С++ из Си у меня провалилась. Попытка делалась в Keil, т.е. компилятор clang, контроллер - мегавиновый АРМ. В поставляемых производителем хедерах пустые биты в регистрах описаны так "volatile uint8_t :1;" на это компилятор пишет "error: anonymous bit-field cannot have qualifiers". Идея исправлять все хедеры не кажется разумной. Идея выделения из всех моих исходников тех, которые используют хедеры производителя и которые не используют, так же не
Такое не сработает? У меня нет armclang, не могу проверить. 

armclang --std=gnu++11

armclang --std=gnu++14

armclang -Wno-invalid-bitfield-type


В C++ такое запрещено стандартом:

Анонимные битовые поля не могут иметь квалификаторы (volatile, const)

Это ограничение введено потому что к анонимным полям нельзя обратиться по имени, поэтому квалификаторы для них бессмысленны.

Можно ещё попробовать:

extern "C" {

#include "vendor_header.h"

}