Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 12:00 14.07.25 
Компютри и Интернет
   >> Програмисти
*Кратък преглед

Тема каст на указател към функция, без typedef?нови  
Автор zaphod (void *lpNothing)
Публикувано28.04.07 11:08



С/С++ са бездънна яма. убеден съм че до края на живота ми ще има тъмни кьошета които ще умра без да съм видял.
тия дни се натъкнах на едно такова - усетих че не мога да накарам компилатора да ми кастне някакъв воид указател към конкретен тип функция. по принцип, указателите към функция имат малко странния синтаксис "връщан тип (* етикет)(типове на аргументи)"
това нещо обаче не виждам как може да се накара да каства, понеже етикета е по средата на декларацията, а не вдясно от нея, както е при нормалните декларации. пробвах да натъпча на мястото на етикета указателя със параметрите, т.е. нещо от рода на: инт (* указател(1,2,3))(инт,инт,инт), ама не щя. пробвах и разни други идеи, ама и те не щяха. възможно ли е въобще, мадафака?




NE SUTOR ULTRA CREPIDAM


Тема Re: каст на указател към функция, без typedef? [re: zaphod]  
Автор Colombino (работен)
Публикувано28.04.07 12:19



Бе то че може - може. И е едно от нещата дето по-добре да не се прави въпреки че може. Става за тъп въпрос за интервю от тези дето нищо полезно не научаваш като ги зададеш. И аз го бех забравил синтаксиса и ми отне поне 5 мин. с компилатор и Google да го нацеля:

int f(int a, int b)

{
std::cout << a << b << std::endl;

return a + b;
}

int main(void)
{
void *pF = f;

int c = (*reinterpret_cast< int(*)(int, int)>(pF))(2, 3);

std::cout << c << std::endl;

return 0;
}


Клубовете малко се понаебаха и не можах да постна.

System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_


Тема Re: каст на указател към функция, без typedef?нови [re: zaphod]  
Автор lxeos (непознат )
Публикувано28.04.07 12:41



Това няма ли да ти свърши работа?

#include <iostream>

using namespace std;

void *ptr0 = 0;
float (*ptr1) (int, int) = 0;

int main () {

(float (*) (int, int)) ptr0;

return 0;
}



Тема Re: каст на указател към функция, без typedef?нови [re: lxeos]  
Автор Colombino (работен)
Публикувано28.04.07 13:20



За какво ползваш std и iostream?!
На мен това няма да ми свърши работа, щото не аз съм изявил желание да каствам, но по принцип казано - не.
Това което си написал не е извикване на функция, а просто каст, което е код без ефект. Все едно да напишеш NULL; . Иначе това е синтаксисът със C-cast, ма аз пиша на C++. Той разбира се е позволен, но нежелателен.

System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_


Тема а, месринови [re: Colombino]  
Авторzaphod (Нерегистриран)
Публикувано28.04.07 15:41



знаех си че ти няма начин да не знаеш :)
обаче се оправих и без това нещо (трябваше ми за автоматичен генератор на С код). бях се хванал да хакна едно устройство, за което автора му си мислеше че е нехакваемо, щото било базирано на фтди чип със секюрити номерче в него. сега ще ходим със злощастния разработчик да пием бира и да му разясня слабите места в защитата му





Тема май пробвах нещо подобно, не стананови [re: lxeos]  
Авторzaphod (Нерегистриран)
Публикувано28.04.07 15:46



а сега не ми се пробва пак



Тема Re: май пробвах нещо подобно, не стананови [re: zaphod]  
АвторColombino (Нерегистриран)
Публикувано28.04.07 16:36



Не бе, така си е синтаксиса както го е на писал. Ма накрая требе да дереференснеш получения пойнтер както аз съм направил, иначе не дава да направиш извикване на функцията. Немам идея що така. За мен указател към функция е нещо което нема нужда от експлицитно дереференсване като указател към масив.



Тема Re: май пробвах нещо подобно, не стананови [re: Colombino]  
Авторzaphod (Нерегистриран)
Публикувано28.04.07 21:14



верно че не съм пробвал да дереференсвам, и през ум не ми е минавало. все пак функцията се вика директно през указател, а не със референс.



Тема Re: каст на указател към функция, без typedef?нови [re: Colombino]  
Автор lxeos (непознат )
Публикувано28.04.07 22:50



Коломбино, постнал съм предното като отговор на Зафод, за тебе ама нищо не съм имал предвид щото ти видях поста чак след като пуснах моя.

std & iostream ги има щото моето иде си ги включва като почнеш всеки файл и в последствие копи-пейст.
Въпросът беше чисто синтактичен как се прави каст от войд пойнтер към пойнтер на функция и това беше моето предложение. Нататък вече може да си го викаш, инкрементираш и т.н.

Иначе, Зафод е прав, че C++ предлага предостатъчно за учене и много излишни неща. Кога за последно някой от вас е ползвал мутабле?



Тема Re: каст на указател към функция, без typedef?нови [re: lxeos]  
Автор Colombino (работен)
Публикувано29.04.07 00:42



Сори, моя грешка. Не знам що съм останал с грешното впечатление че си постнал под мен.

System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_



*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.