|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 7:52 pm
|
Страница 1 от 1
|
[ 13 мнения ] |
|
| Автор |
Съобщение |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
 C pointer към процедура
Да си умреш от срам! Залегнал съм над един компилатор без хелп. Искам да вкарам в една СТРУКТУРА указатели към процедура void prawi_neshto(void) .
Kак се прави тази магия и как после се вика тази процедура.
Знам че е нескромно, ама ми е спешно!!!!
|
| Съб Яну 22, 2005 8:31 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Значи да поясня - в структурата адресът е точно който трябва ( проверено с DUMP ). Как се вика бе, брато? Какво да напиша, та да го извикам като подпрограма?
|
| Съб Яну 22, 2005 8:37 pm |
|
 |
|
danov
Ранг: Минаващ
Регистриран на: Вто Ное 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 |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Да де, ам при мен ime.ime na ukazatelq компилаторът го пропуска като "dummy". Като му махна оптимизациите, изчислява адреса, но не тича да го изпълнява това, дето го пише там. Къде може да съм се оплел?
|
| Съб Яну 22, 2005 10:08 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
Къв е тоя компилатор бе, батка.
И защо ти е толкова задължително да пазиш именно указател?
|
| Нед Яну 23, 2005 1:56 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Те там е ключът от палатката - KEIL за 8051, архивна версия от 97 година. Ярето ( IAR ) си го скомпилира без никакви възражения и си работи. Само че IAR ми е още по-архивен и работи под DOS
Защо пазя указатели? Това чудо получава команди по сериен канал. Всяка команда е найсе байта ( различно ! ) и като я получи, трябва да направи нещо. затова си го реших така : структура със три полета : текст, един интижър ( параметър ) и един поинтер. Все си мисля, че това е добра постановка на задачата, още повече, че то си стана.
|
| Нед Яну 23, 2005 1:10 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
switch? 
|
| Нед Яну 23, 2005 3:56 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 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 |
|
 |
|
danov
Ранг: Минаващ
Регистриран на: Вто Ное 16, 2004 4:43 pm Мнения: 85 Местоположение: София
|
а какво става с:
ime.ime_na_ukazatelq ();
в смисъл, да не си забравил скобите?
|
| Нед Яну 23, 2005 5:31 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Не, просто не бях случил на партньор ( компилатор ). Проблемът е решен, благодаря за отзивчивостта.
|
| Нед Яну 23, 2005 5:48 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
Абе казвах аз, че IAR е боклук.  Не знам що го превъзнасят толкова.
|
| Нед Яну 23, 2005 7:05 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 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 |
|
|
|
Страница 1 от 1
|
[ 13 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|