при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Код: Выделить всё
typedef struct
{
int32_t power;
int32_t energy;
uint32_t voltage;
uint32_t current;
} ChannelData_t;
Код: Выделить всё
typedef struct
{
ChannelData_t ChannelData[8];
} All_ChannelData_t;
Код: Выделить всё
All_ChannelData_t All_ChannelData = {
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
};
Код: Выделить всё
All_ChannelData_t All_ChannelData = { .ChannelData[0 ... 7] = { 1000, 1000, 1000, 1000 }};ARV писал(а):запятая последняя в каждой структуре и последняя в массиве - не лишняя ли?
От этих якобы лишних запятых хуже не будет. Я предпочитаю ставить запятую и для последнего поля в структуре - потом, при добавлении новых полей, и дифф выглядит "чище" и копипастить проще.VladislavS писал(а):Должно быть 32 целых числа и между ними 31 запятая. Считай.
В будущем, возможно расширение второй структуры.ARV писал(а):кстати, зачем еще одна структура, если в ней только одно поле - массив? чем массив плох?
Это получается будет восемь строк (в каждой по одной структуре)?WiseLord писал(а):All_ChannelData_t All_ChannelData = { .ChannelData[0 ... 7] = { 1000, 1000, 1000, 1000 }};
нет, это одна строка для всех восьми структур, но это расширение синтаксиса Си только для компилятора GCCisx писал(а):Это получается будет восемь строк (в каждой по одной структуре)?
Код: Выделить всё
All_ChannelData_t All_ChannelData = {
(ChannelData_t){
1000,
1000,
1000,
1000,
},
(ChannelData_t){
1000,
1000,
1000,
1000,
},
...
};Код: Выделить всё
All_ChannelData_t All_ChannelData = {
.ChannelData[0] = {
1000, 1000, 1000, 1000,
},
.ChannelData[1] = {
1000, 1000, 1000, 1000,
},
.ChannelData[2] = {
1000, 1000, 1000, 1000,
},
.ChannelData[3] = {
1000, 1000, 1000, 1000,
},
.ChannelData[4] = {
1000, 1000, 1000, 1000,
},
.ChannelData[5] = {
1000, 1000, 1000, 1000,
},
.ChannelData[6] = {
1000, 1000, 1000, 1000,
},
.ChannelData[7] = {
1000, 1000, 1000, 1000,
},
};
Код: Выделить всё
typedef struct
{
int32_t power;
int32_t energy;
uint32_t voltage;
uint32_t current;
} ChannelData_t;
typedef struct
{
ChannelData_t ChannelData[8];
} All_ChannelData_t;
All_ChannelData_t All_ChannelData = {
1001, 1002, 1003, 1004,
2001, 2002, 2003, 2004,
3001, 3002, 3003, 3004,
4001, 4002, 4003, 4004,
5001, 5002, 5003, 5004,
6001, 6002, 6003, 6004,
7001, 7002, 7003, 7004,
8001, 8002, 8003, 8004
};
ерунду глалолить изволите.AAX писал(а):отлично объясняют, в чём проблема у задавшего вопрос: {1000,1000,1000,1000,} - с точки зрения компилятора это массив int[4], имеющий разительно отличаться от структуры из четырёх элементов int32_t
Код: Выделить всё
All_ChannelData_t All_ChannelData= {
.ChannelData[0] = { 1000, 1000, 1000, 1000},
.ChannelData[1] = { 1000, 1000, 1000, 1000},
.ChannelData[2] = { 1000, 1000, 1000, 1000},
.ChannelData[3] = { 1000, 1000, 1000, 1000},
.ChannelData[4] = { 1000, 1000, 1000, 1000},
.ChannelData[5] = { 1000, 1000, 1000, 1000},
.ChannelData[6] = { 1000, 1000, 1000, 1000},
.ChannelData[7] = { 1000, 1000, 1000, 1000},
};