Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 15
1

Функция которая принимает структуру любого типа в качестве параметра

29.06.2011, 12:48. Просмотров 1415. Ответов 2
Метки нет (Все метки)

Дана функция которая может принимать структуру любого типа (т. е. может хранить например 2 float и 1 bool, или может хранить 3 float, но еще хранит обязательные - 2 типа unsigned char ) в качестве аргумента, также известно максимальный размер который может быть у структуры, могли бы вы подсказать как реализовать функцию. А также в этой функции надо заполнить обязательные 2 unsigned char.

Думаю что можно сделать так
C
1
2
3
4
5
void Func( unsigned int *StructPtr , unsigned int SizeOfStruct )//прототип
 
struct PARAM myParam;//какая-то структура
 
Func( (unsigned int *)&myParam , sizeof( myParam )/2 );//2 потому-что в словах а не в байтах
Как только потом мне 2 обязательных unsigned char заполнять?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2011, 12:48
Ответы с готовыми решениями:

Нужна функция, которая принимает в качестве параметра массив символов char [20] и возвращает число пробелов в нем
Нужна функция, которая принимает в качестве параметра массив символов char и возвращает число...

Функция, которая в качестве параметра принимает массив
Ребята, кто опытные, обращаюсь к вам. Хотела этот массив реализовать через функцию и вывести на...

Функция которая принимает в качестве параметра массив из чисел
Помогите пожалуйста, буду очень сильно вам благодарен. На языке PHP создать функцию, которая...

Функция которая принимает в качестве параметра sql-запрос
Необходимо создать функцию которая в качестве параметра принимает sql запрос типа...

2
591 / 529 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
29.06.2011, 12:58 2
1) void* 2) template, но в любом случае в функции придётся выполнять какие-то общие действия над структурой, а если захочется конкретики то

1) приводить к нужному типу прямо в функции либо использовать 2-м параметром указатель на функцию и применять его к void* (в любом случае придется переписывать код для каждого случая)
2) делать явное инстанцирование

Цитата Сообщение от sanek222 Посмотреть сообщение
Как только потом мне 2 обязательных unsigned char заполнять?
в вашем случае никак


upd:
если С++ то сделать базовый класс содержащий 2 поля unsigned char и от него наследовать что угодно. в функцию принимать указатель на базовый.
для работы с переменными отдельных классов придется мутить с кастами все равно )) но явные переменные зато легко инициализируете.
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 15
29.06.2011, 13:28  [ТС] 3
У меня СИ. А можно зная размер sizeof( myParam )/2 как-то вычислить смещение в StructPtr и тупо подставить нужные unsigned char в это место? Эти два байта CRC16 младш и старш части. А структуру надо например просто в EEPROM память записать - функция есть.

Добавлено через 21 минуту
Цитата Сообщение от sanek222 Посмотреть сообщение
Эти два байта CRC16 младш и старш части. А структуру надо например просто в EEPROM память записать - функция есть.
как делать советовать не надо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2011, 13:28

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Написать функцию, которая в качестве параметра принимает логическое выражение
Необходимо написать функцию JavaScript, которая принимает логическое выражение, анализирует строку,...

Написать шаблонную функцию, которая принимает одномерный массив любого типа, значение такого же типа, и размер массива,
Решил задачу, но у меня выскакивает ошибка. Вот сама задача: Написать шаблонную функцию, которая...

Функция, которая принимает в качестве аргумента функцию
Вам уже приходилось писать таблицу умножения. Но на этот раз вас попросили сделать в плюс к таблице...

Создать функцию EvenColReport, которая принимает в качестве параметра двумерный массив целых чисел (объявлен как указате
Создать функцию EvenColReport, которая принимает в качестве параметра двумерный массив целых чисел...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.