Отговори на тема  [ 13 мнения ] 
C pointer към процедура 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение C pointer към процедура
Да си умреш от срам! Залегнал съм над един компилатор без хелп. Искам да вкарам в една СТРУКТУРА указатели към процедура void prawi_neshto(void) .
Kак се прави тази магия и как после се вика тази процедура.

Знам че е нескромно, ама ми е спешно!!!!


Съб Яну 22, 2005 8:31 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Значи да поясня - в структурата адресът е точно който трябва ( проверено с DUMP ). Как се вика бе, брато? Какво да напиша, та да го извикам като подпрограма?


Съб Яну 22, 2005 8:37 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Вто Ное 16, 2004 4:43 pm
Мнения: 85
Местоположение: София
Мнение 
typedef struct _tip_na_structurata {
void (*ime_na_ukazatelja) (void);
...... drugite neshta ....
} tip_na_structurata;

void prawi_neshto(void) {
.....
}

tip_na_structurata ime = {
prawi_neshto,
.......
};

и викането:
ime. ime_na_ukazatelja ();


Съб Яну 22, 2005 9:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Да де, ам при мен ime.ime na ukazatelq компилаторът го пропуска като "dummy". Като му махна оптимизациите, изчислява адреса, но не тича да го изпълнява това, дето го пише там. Къде може да съм се оплел?


Съб Яну 22, 2005 10:08 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Къв е тоя компилатор бе, батка. :)
И защо ти е толкова задължително да пазиш именно указател?


Нед Яну 23, 2005 1:56 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Реконструктор написа:
Къв е тоя компилатор бе, батка. :)
И защо ти е толкова задължително да пазиш именно указател?


Те там е ключът от палатката - KEIL за 8051, архивна версия от 97 година. Ярето ( IAR ) си го скомпилира без никакви възражения и си работи. Само че IAR ми е още по-архивен и работи под DOS :cry:

Защо пазя указатели? Това чудо получава команди по сериен канал. Всяка команда е найсе байта ( различно ! ) и като я получи, трябва да направи нещо. затова си го реших така : структура със три полета : текст, един интижър ( параметър ) и един поинтер. Все си мисля, че това е добра постановка на задачата, още повече, че то си стана.


Нед Яну 23, 2005 1:10 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
bateAz написа:
и като я получи, трябва да направи нещо.


switch? :)


Нед Яну 23, 2005 3:56 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
При около 200 команди и почти 80 процедури, ти как би го направил? Така ми изглежда по-пригледно :
. . .
"Z_0120A", KEY, give_stt_number,
"Z_0121A", KEY, give_stt_size,
"K12Z", 0, stop_aux_terminals,
. . .

200 такива реда, свирка на някакъв измислен протокол, в който не виждам никаква логика - свинщина. Освен това голяма част от процедурите се викат и по други причини.


Нед Яну 23, 2005 4:56 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Вто Ное 16, 2004 4:43 pm
Мнения: 85
Местоположение: София
Мнение 
bateAz написа:
Да де, ам при мен ime.ime na ukazatelq компилаторът го пропуска като "dummy". Като му махна оптимизациите, изчислява адреса, но не тича да го изпълнява това, дето го пише там. Къде може да съм се оплел?


а какво става с:
ime.ime_na_ukazatelq();
в смисъл, да не си забравил скобите?


Нед Яну 23, 2005 5:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Не, просто не бях случил на партньор ( компилатор ). Проблемът е решен, благодаря за отзивчивостта.


Нед Яну 23, 2005 5:48 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Абе казвах аз, че IAR е боклук. :) Не знам що го превъзнасят толкова.


Нед Яну 23, 2005 7:05 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Ами то Бате аз си е виновен що ползва толкоз архивни версии.
А за IAR имам наблюдения от версиите за PIC,работи си много добре и дава оптимизиран код но има много особенности в работата с него. Поизучиш ли ги веднъж и работата с него става приятна.


Пон Яну 24, 2005 2:43 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Ми аз доста време работех с него, но също като батето имах постоянни проблеми с указатели - даже бях писал за това. Може да има някви хитрости, за да се накара да работи нормално, но аз мразя софтуер, който е писан от непризнати гении, изразяващи по особен начин своята оригиналност. Програми, които трябва да лъжеш с хитрости, за да ги накараш да следват нормалната, общоприета логика, не стават за нищо, според мен.


Пон Яну 24, 2005 2:49 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 13 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни