Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 07.12.2011
Сообщений: 80
1

Typedef структуры массива с заполнением ячеек на этапе компиляции

04.05.2018, 08:55. Показов 984. Ответов 1

Author24 — интернет-сервис помощи студентам
Есть структура следующего вида:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
typedef union 
{
    struct{
        unsigned long register4B;
        unsigned long register2C;
        unsigned long register25;
        unsigned long register24;
        unsigned long register0E;
        unsigned long register0B;
        unsigned long register0A;
        unsigned long register09;
        unsigned long register00;
    } nameRegister;    
    struct{
        unsigned long registers[9];
    } numberRegister;
}LMX_INITIALIZE_REGISTERS;
Мне нужно создать массив из 20 таких структур:
C
1
LMX_INITIALIZE_REGISTERS frequencyRXFloat[20];
И затем заполнить поля структур в каждом массиве не в основном коде программы, а на этапе компиляции.
То есть например при объявлении переменной типа:
C
1
2
3
4
5
unsigned char Value = 5;
int main ()
{
return 0;
}
переменная Value при выполнении программы имеет начальное значение равное 5, и будет иметь до тех пор пока его не переопределить.
Хочу также))
В связи с этим вопрос можно ли сделать что-то вроде:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//определяем typedef нашей структуры
typedef union 
{
    struct{
        unsigned long register4B;
        unsigned long register2C;
        unsigned long register25;
        unsigned long register24;
        unsigned long register0E;
        unsigned long register0B;
        unsigned long register0A;
        unsigned long register09;
        unsigned long register00;
    } nameRegister;    
    struct{
        unsigned long registers[9];
    } numberRegister;
}LMX_INITIALIZE_REGISTERS;
//объявляем нашу структуру массив
LMX_INITIALIZE_REGISTERS frequencyRXFloat[20];
//и заполняем, что-то вроде
frequencyRXFloat[0].nameRegister.register4B = 0x7A000000; 
frequencyRXFloat[0].nameRegister.register2C = 0xA6000000;
      ......   .........    .......    ........    ......
      ......   .........    .......    ........    ...... //и так далее, 
 
//потом повторяем это же для второго элемента массива
frequencyRXFloat[1].nameRegister.register4B = 0x7A000100; 
frequencyRXFloat[1].nameRegister.register2C = 0xA6004000;
      ......   .........    .......    ........    ......
      ......   .........    .......    ........    ...... //и так далее, 
 
//а здесь функция main, где эти массивы используются
int main ()
{
    ......   .........    .......    ........    ......
    //здесь что-то происходит
    ......   .........    .......    ........    ......
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2018, 08:55
Ответы с готовыми решениями:

Вычисление размера массива на этапе компиляции
Нашел код который вычисляет размер массива на этапе компиляции Но сам код мне не понятен....

Как добавить анонимный тип в объект не на этапе компиляции, а на этапе выполнения программы? Надо для routes.MapRoute
В приложении ASP.NET MVC у меня есть xml файл с маршрутами типа: <route url="Home/{par1}/{par2}"...

Заполнением масива ячеек dataGridView1
Проблема заполнением масива ячеек dataGridView1 Есть текст вот - его копируем в файл текстовый...

Выпадающий список с заполнением двух ячеек
Добрый день! Озадачился вопросом. Excel 2003 Есть некоторый список. Пусть люди, Ваня, Маша,...

1
603 / 403 / 212
Регистрация: 30.04.2017
Сообщений: 743
04.05.2018, 12:14 2
Инициализация списком.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
 
typedef union
{
    struct{
        unsigned long register4B;
        unsigned long register2C;
        unsigned long register25;
        unsigned long register24;
        unsigned long register0E;
        unsigned long register0B;
        unsigned long register0A;
        unsigned long register09;
        unsigned long register00;
    } nameRegister;
    unsigned long registers[9];
}LMX_INITIALIZE_REGISTERS;
 
LMX_INITIALIZE_REGISTERS lig[2] =
{
    {{0XA7,0X28,0X56,0XAC,0X2D,0X56,0XA7,0X28,0XB6}},
    {{0X17,0X28,0XB6,0X22}}
};
int main()
{
    for(int i =0;i<2;++i)
    {
        for(int j=0;j<9;++j)
            printf("0x%X ",lig[i].registers[j]);
        printf("\n");
    }
}
0
04.05.2018, 12:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2018, 12:14
Помогаю со студенческими работами здесь

Ошибка на этапе компиляции
Добрый вечер. Ребят помогите, не могу понять в чем дело. Есть программа в которой описан 1 класс...

ошибка на этапе компиляции
в чём может быть проблема?

C++14: вычисления на этапе компиляции
Добрый день. Есть такой код:struct Qaz { constexpr Qaz(uint8_t index) : _index(index) {} ...

Несистематическая ошибка на этапе компиляции
#pragma hdrstop #pragma argsused #include &lt;iostream.h&gt; void main() { double a; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru