ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
31 октября
1550779
AlexG (29.10.2025 00:50, просмотров: 676)
Наткнулcя на непонятный нюанс в GCC. Следующий код компилируется как C, но не компилируется как C++: 

#include <stdint.h>

//! Универсальный элемент хранения данных пункта меню

typedef union

{

uint8_t u_8;

char const** cfpp;

} uni_data_t;

//! Структура одного пункта меню

typedef const struct menu_item

{

char const* str; //!< Указатель на строку, содержашую название пункта меню

uni_data_t d1;//!< Основные данные

} menu_item_t;

char const* b_vals[2]= {"Нет","Да"}; //!< список обозначений состояний для булевских перменных

menu_item_t Menu_pp[] =

{

//"--------------------"

{"Пробные пуски:" ,.d1.cfpp=b_vals},

{"Период,ч:" ,1 },

};


Ругается

error: expected primary-expression before '.' token

на строку

.d1.cfpp=b_vals



Просто откомпилировать только этот файл как C не получается, так как в реальном прокте много связей с однозначно С++ кодом.

Всю структуру прокта надо будет перекроить чтобы компилятор C не удивлялся не знакомым вещам.


IAR компилировал всё это без вопросов.