реклама на сайте
подробности

 
 
> Передача структуры в функцию через указатель
Lmx2315
сообщение May 22 2015, 12:21
Сообщение #1


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Здравствуйте уважаемые!
Можно передать структуру в функцию через посредника?

CODE
  typedef struct                //
{
  unsigned int   TNI[256];
  unsigned int   TKI[256];
  unsigned int   TNP[256];
  unsigned int   TKP[256];
  
} Sintez_struct;

Sintez_struct    Struk0,Struk1; //структуры массивов
Sintez_struct     * Sintez_str;   //указатель на структуру

if (a==0) Sintez_str = &Struk0; //проверка условия по которому передаётся либо одна структура либо другая
if (a==1) Sintez_str = &Struk1;

   PPI_massiv(Sintez_str ); //отработка


..я так собственно сделал и поймал кучу глюков, делал в VisualDSP.
Если передаю в функцию непосредственно структуры то проблем нет - вот так

if (a==0) PPI_massiv(&Struk0);
if (a==1) PPI_massiv(&Struk1);


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение May 22 2015, 12:30
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А функция PPI_massiv как определена, что принимает - структуру, указатель на структуру?
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение May 22 2015, 12:52
Сообщение #3


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



QUOTE (ViKo @ May 22 2015, 16:30) *
А функция PPI_massiv как определена, что принимает - структуру, указатель на структуру?

void PPI_massiv(Sintez_struct *S )
QUOTE (_pv @ May 22 2015, 16:33) *
не получается ли так что например a = 2 или больше?

..переменная "а" принимает только 0 или 1.
з.ы.
Глюки выглядят так - как вроде, часть передаваемой структуры присутствует , а часть наполнена мусором.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
_pv
сообщение May 22 2015, 13:49
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Lmx2315 @ May 22 2015, 18:52) *
..переменная "а" принимает только 0 или 1.
з.ы.
Глюки выглядят так - как вроде, часть передаваемой структуру присутствует , а часть наполнена мусором.

visualDSP не самый безглючный в мире компилятор, но тут проблема не в нём.

добавте тогда
printf ("%d\n", &Struk0);
printf ("%d\n", &Struk1);

перед каждым вызовом
printf ("a= %d\n", a);

а в PPI_massiv(Sintez_struct * s ){
printf ("ppi: %d\n", s);
...
}
и посмотрите что именно туда передаётся.

если лично вы руками нигде "а" не меняете это еще не значит, что по ошибке в эту область памяти где она лежит никто не может записать что попало.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th August 2025 - 23:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01828 секунд с 7
ELECTRONIX ©2004-2016