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

 
 
 
Reply to this topicStart new topic
> Как передать указатль на структуру?, IAR AVR pure C.
fmdost
сообщение Apr 9 2013, 19:51
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Надо передать указатель на одну из нескольких структур st1,st2,st3.
Вот такой код
Код
sruct st{
    char a.
    char b.
    char c.
}st1,st2,st3;

void foo([Какой нужен квалификатор???)

    foo([вот сюда рзультате какой надо указатель?)

Спасибо.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Apr 9 2013, 19:57
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322




Код
void foo(st *);

foo(&st1);
Go to the top of the page
 
+Quote Post
fmdost
сообщение Apr 9 2013, 20:13
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(_Артём_ @ Apr 9 2013, 23:57) *
Код
void foo(st *);

Не берёт он такую запись! Эту " * " вообще ни в какую не признаёт! Пишет что st is indefined. Там же есть st1,st2,st3;
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 9 2013, 20:19
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Код
void foo(struct st *x)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Apr 9 2013, 20:25
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(fmdost @ Apr 9 2013, 23:13) *
Не берёт он такую запись

Да ну? B как ругается?

Цитата(fmdost @ Apr 9 2013, 23:13) *
Эту " * " вообще ни в какую не признаёт!

Компилятор не признаёт скорее "." вместо ";"...
Код
struct st{
char a;
char b;
char c;
}st1,st2,st3;

void foo(st *);

void foo(st *s_ptr)
{
}
void main()
{
    foo(&st1);
}



Цитата(aaarrr @ Apr 9 2013, 23:19) *
Код
void foo(struct st *x)

Кстати, если программа на Си без плюсов, то ещё "struct st *"
Go to the top of the page
 
+Quote Post
fmdost
сообщение Apr 9 2013, 20:26
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(_Артём_ @ Apr 10 2013, 00:22) *
Да ну? B как ругается?


st is indefined

Цитата(aaarrr @ Apr 10 2013, 00:19) *
Код
void foo(struct st *x)

Ага, заработало.
Прям как в reference guide на странице 131. Кто бы мог подумать! wink.gif Спасибо.
Кстати, квалификатор *z тоже работат. Только надо так записывать __z void foo(st *z);
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 10 2013, 06:23
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



CODE
typedef sruct {
    char a.
    char b.
    char c.
} st;

st st1,st2,st3;

void foo(st * data);

void test()
{
    foo(&st1);
}

Такой код не содержит мозолящие глаза struct при каждом упоминании st и тем не менее компилится и в C и в C++ режимах.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 10 2013, 07:16
Сообщение #8


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Сергей Борщ @ Apr 10 2013, 10:23) *
Такой код не содержит мозолящие глаза struct при каждом упоминании st и тем не менее компилится и в C и в C++ режимах.
+1
Но в рекомендациях на стиль написания исходников linux не рекомендуется делать лишних typedef, и что мол мозолящее слово struct помогает самодокументировать код.
Тем не мене я всегда пишу именно так как вы предложили, но всегда добавляю суффикс _t к именам пользовательских типов.
Код
typedef struct
{
    int a;
    int b;
} ab_t;


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 10 2013, 07:58
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (demiurg_spb @ Apr 10 2013, 10:16) *
Но в рекомендациях на стиль написания исходников linux
Значит эти рекомендации нам не подходят. Мы линух не пишем.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 15th July 2025 - 17:43
Рейтинг@Mail.ru


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