Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> с, структура/данные/наполнение, как оптимизировать 
:(
    Опции темы
sunjob
Дата 20.2.2025, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.3.2010

Репутация: нет
Всего: нет



день добрый, товарищи колдуны! :о)

краткое строение проекта:
- struct.x      - описание структуры, массив/список данных/структур, функции работы со структурой/списком.
- struct_cust.x - кастомные данные, создание экземпляров структуры, добавление в "список"

некоторые неудобства:
- наполнение данных/добавление в "список" происходит в реализации/struct_cust.с
- установка счетчика списка в хедере/struct_cust.h

по другому не получилось "реализовать", хотелось бы все логично/в одном месте:
- создание данных/добавление в список
- определение/установка счетчика

какие есть мнение/идеи/хаки-каки итд?!

- linux, gcc, c-pure

спасиб

main.c
Код

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include "main.h"
#include "struct.h"

int main (void)
{
printf("### struct ###\n");
struct_list();
return 0;
}


struct.h
Код

struct data_struct 
{
uint8_t num;
void  (*func)(uint8_t id);
};

void struct_list(void);


struct.c
Код

#include "struct.h"
#include "struct_cust.h"

struct data_struct * lst[NUM];

void struct_list()
{
printf("struct_list()\n");

for(uint8_t i=0; i<NUM; i++)
  {
  printf("lst[%u].num = %u; ",i, lst[i]->num);
  if(lst[i]->func != NULL)  { lst[i]->func(i); }
  printf("\n");
  }
}


struct_cust.h
Код

#define NUM 3
void struct_cust_func(uint8_t id);


struct_cust.c
Код

#include "struct.h"
#include "struct_cust.h"

struct data_struct data1 = { .num = 1, .func = struct_cust_func };
struct data_struct data2 = { .num = 2, };// .func = struct_cust_func };
struct data_struct data3 = { .num = 3, .func = struct_cust_func };

extern struct data_struct * lst[NUM];
       struct data_struct * lst[NUM] = { &data1, &data2, &data3 };

void struct_cust_func(uint8_t id)
{
printf("struct_cust_func(%u)", id);
}


makefile
Код

all: main.o struct.o struct_cust.o
    gcc -o main main.o struct.o struct_cust.o

main.o: main.c
    gcc -c main.c

struct.o: struct.c
    gcc -c struct.c

struct_cust.o: struct_cust.c
    gcc -c struct_cust.c

clean:
    rm -f *.o main


main out
Код

### struct ###
struct_list()
lst[0].num = 1; struct_cust_func(0)
lst[1].num = 2;
lst[2].num = 3; struct_cust_func(2)


*.txt -> *.txz

Это сообщение отредактировал(а) sunjob - 20.2.2025, 12:05

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  struct_multi_file.txt 3,84 Kb
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.