Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
#1

Альтернативный вызов функции - C++

15.08.2014, 10:44. Просмотров 2594. Ответов 66
Метки нет (Все метки)

1. Интересует метод вызова функции через указатель(или по другому).
2. Интересует метод взятия кол-ва аргументов функции и их типов, а так же тип возвращяемого значения.

По второму пункту вообще ничего не нашёл, а по первому есть некоторые вопросы.
C++
1
2
3
4
5
6
7
8
9
#include "FTD2XX.h" // библиотека от FTDI
typedef FT_STATUS (*pFT_Open) (int, FT_HANDLE *); // тип данных "функция FT_OPEN"
 
HMODULE hMod = LoadLibrary ("FTD2XX.dll"); // загрузка библиотеки - д. б. не ноль
pFT_Open pOpen = GetProcAddress (hMod, "FT_Open"); // получили адрес функции - также д. б. не ноль
 
FT_STATUS st = pOpen (0, &hDev);    // вызываем функцию
 
FreeLibrary (hMod); // закрыли библиотеку
Нашёл вот такой вот вызов функции через строку названия функции "FT_Open". Меня интересует, если не создавать DLL, то можно ли как то вызвать подобным способом стандартную функцию (например из winuser.h)?

Ещё заинтересовало такое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string.h>
void check(char *a, char *b, int (*cmp) (const char *, const char *));
int main(void)
{
char s1 [80], s2[80];
int (*p) (const char*, const char*);
p = strcmp; /* получение адреса strcmp() */
gets(s1);
gets (s2);
check(s1, s2, p);
return 0;
}
 
void check (char *a, char *b, int (*cmp) (const char *, const char *))
{
printf("Testing for equality.\n");
if(!(*cmp) (a, b)) printf("Equal");
else printf("Not equal");
}
Однако тут явно указывается кол-во членов и их тип :
C++
1
int (*p) (const char*, const char*);
Что мне не подходит, можно как то это преодолеть? И ещё меня не устраивает что надо явно писать:
C++
1
p = strcmp;
А не строковой (char *) переменной, что дало бы возможность динамики (ну именно это в конечном итоге меня и интересует).

П.С. Если это возможно, приводите пожалуйста примеры без использования STL и классов, а более приближенными к Си методами.

Вообще по поводу пункта 2: подумалось, что если реализовать пример1, то нужен будет список функций, который я в принципе могу хранить в txt фале вместе с кол-вом аргументов и возвращяемым значением, хотя это будет тупое копирование строк из .h файлов, к примеру из winuser будут подобия:
C++
1
WINUSERAPI LRESULT WINAPI SendMessageA(HWND,UINT,WPARAM,LPARAM);
От сюда я могу "запарсить" и искомое извлечь для выполнения операции. Не думаю что будет смысл париться над пунктом2, т.к. игра не стоит свеч, значит стаётся открытым вопрос первый.

Добавлено через 29 минут
Узнал что это:
C++
1
typedef FT_STATUS (*pFT_Open) (int, FT_HANDLE *);
являет прототипом функции. В общем вот эту инициализацию прототипа можно обойти? Т.е. подразумеваю что например у меня будет динамический массив с переменными, после парсинга я получу типы, и согласно им - заполню массив. Далее если бы можно было бы реализовать вызов GetProcAddress с сылкой на массив, то хотелось бы чтоб автоматически передавались в аргументы значения массива от [1] и до кол-ва аргументов ( [0] аргумент думаю будет идти как возвращяемое значение функции)... (может как то можно использовать в данном случае переменное кол-во аргументов в функции?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2014, 10:44     Альтернативный вызов функции
Посмотрите здесь:

вызов функции из под функции - C++
Добрый вечер. Такая ситуация: есть функция, назовем ее MainThreadFunc. Как можно сделать так, чтобы любая другая функция, которую я напишу,...

Функции в Assembler, вызов функции в C++ - C++ Builder
Здравствуйте, я составил функции на языке Assembler и вставил ее в код на C++: extern &quot;C&quot; { int INCREMENT(int a); } _asm {...

Вызов функции - C++ Builder
Собственно интересует как можно один раз вписать функцию с выполнением определенного алгоритма, так, чтоб потом когда понадобится этот...

Вызов функции - C++
Привет всем. Вот такая структура кода: void Sailary() void SetShop() void SetMenu() void ResetData() int main()

Вызов функции - C++
Здравствуйте! Не могу вызвать функцию, объясните причину. template &lt;typename T&gt; void Calc_etalon (QDir &amp; DirTxt) { ...

Вызов функции - C++
Арифметические операции с длинными числами, которые представлены в виде массивов: есть функция умножения двух длинных чисел...

Вызов функции - C++
Имеется такая вот функция, и к ней нужно написать вызов. #include &lt;stdio.h&gt; char *F12(char **p, int n) { int k,i,j; for...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dmitriy_M
1340 / 1221 / 111
Регистрация: 20.03.2009
Сообщений: 4,369
Записей в блоге: 11
15.08.2014, 11:34     Альтернативный вызов функции #2
Есть такая замечательная книжка C++. Священные знания: второе издание, исправленное.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
15.08.2014, 12:40  [ТС]     Альтернативный вызов функции #3
Dmitriy_M, почитал, большая часть книги посвящена работе с классами и STL, так что не подходит.
Пойду гуглить дальше, как избежать явного привидения прототипа функции... (если я правильно выразился)

Добавлено через 19 минут
Добавлю:
в C до принятия стандарта C99 (ISO / IEC 9899:1999) можно было вызывать функции (в том числе, и из стандартной библиотеки) без указания их прототипа
и
Так как в С нет перегрузки функций, то компилятор просто искал совпадающее имя в стандартной библиотеке, обычно добавляя знак подчеркивания перед именем функции.
Вот инетересует что по поводу нынешнего положения дел сейчас? Если я заведомо не создаю перегруженных функций, то можно ли пользоваться таким методом сейчас в С++?
DrOffset
6909 / 4102 / 933
Регистрация: 30.01.2014
Сообщений: 6,893
15.08.2014, 18:23     Альтернативный вызов функции #4
Цитата Сообщение от Izual Посмотреть сообщение
Если я заведомо не создаю перегруженных функций, то можно ли пользоваться таким методом сейчас в С++?
Нельзя, в С++ функции декорируются (аргументы, спецификация исключений, константность, неймспейсы - все это часть имени). Компилятор просто не соберет такой код.

Цитата Сообщение от Izual Посмотреть сообщение
Пойду гуглить дальше, как избежать явного привидения прототипа функции...
Этого избежать нельзя.

Добавлено через 6 минут
Цитата Сообщение от Izual Посмотреть сообщение
Меня интересует, если не создавать DLL, то можно ли как то вызвать подобным способом стандартную функцию (например из winuser.h)?
Можно загрузить через LoadLibrary user32.dll и вызвать нужную функцию, зная ее прототип.

Добавлено через 7 минут
Цитата Сообщение от Izual Посмотреть сообщение
(может как то можно использовать в данном случае переменное кол-во аргументов в функции?)
Можно попробовать, но все еще остается вопрос с возвращаемым значением. Тут надо предполагать, что он всегда int (как это делается в С), но это накладывает определенные ограничения. Т.е. функции все равно будут не любые.
Только похоже динамическую передачу считанного из файла количества аргументов таки придется писать на асме. Т.к. С++ язык со статической типизацией, следовательно тип функции - тоже статический тип. Количество аргументов контролирует компилятор, если нужно это обойти и вынести контроль в рантайм, то скорее всего более или менее рабочий способ удастся получить только на асме.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
15.08.2014, 18:36  [ТС]     Альтернативный вызов функции #5
Цитата Сообщение от DrOffset Посмотреть сообщение
Лучше озвучь задачу, которую решаешь
Динамическое объявление функции. (у меня постоянно в голове подобные задачи, уже спать не могу, кошмары константы мучают)
Надо исходя из предыдущей темы : Освобождение динамически созданных переменных (2-ого уровня)
сделать теперь вызов функций стандартных, описывать их все я не хочу, да и это глупо имхо, т.к. этих стандартных функций тьма.
Я думал что можно исходя из названия функции взять её адрес, однако как я написал выше - этого сделать (вроде как) нельзя без определения аргументов и возвратного значения, а если я их буду писать - то это придётся на каждую функцию писать прототип.
Если бы можно было прототип динамически объявлять, то я бы сделал типа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int MakeFunction(&v)
{
int err = GetArguments(char *name);//название функции
/* Создам файл в него скопирую данные из header файлов, с помощью нескольких парсинговых манипуляций найду название, отсюда возьму же кол-во аргументов, их типы и возвращяемое значение, заполню динамическую структуру согласно этим значениям, [0] переменную оставлю под return, укажу лишь тип*/
/*тут хотел сделать через new[] задание тайпдефа, но т.к. нельзя, то выпью яда*/
typedef MyFunc = new (*Make_func) [err];, где от 0 до err были бы типы согласно v[i].t
//typedef MyFunc (*Make_func) (type, type);
/*и типа провожу манипуляции для вызова функции, предварительно выполнив загрузку библиотеки и получив адрес функции, как это показано в начале 1-ого поста в этой теме*/
HMODULE hMod = LoadLibrary ("Kernel32.dll");
Make_func pOpen = GetProcAddress (hMod, "strcmp");//например strcmp функцию
MyFunc st = pOpen (0, &hDev);
FreeLibrary (hMod);
}
Примерно конешно написал.

Добавлено через 2 минуты
Цитата Сообщение от DrOffset Посмотреть сообщение
Можно загрузить через LoadLibrary user32.dll и вызвать нужную функцию, зная ее прототип.
Только что значит "зная её прототип", это же значит что надо для каждой функции прототип писать. (нет ну можно конешно, даже можно автоматически это сделать, чтоб тупо парсингом в файл txt скинула то что надо, но кол-во прототипов будет ох как много, это очень затратно будет для программы мне кажется)
DrOffset
6909 / 4102 / 933
Регистрация: 30.01.2014
Сообщений: 6,893
15.08.2014, 18:45     Альтернативный вызов функции #6
Цитата Сообщение от Izual Посмотреть сообщение
Только что значит "зная её прототип"
Значит, что язык С и С++ - это языки со статической типизацией и не зная тип нельзя ничего сделать. Т.е. чтобы что-то вызвать, нужно, чтобы был известен тип.Иначе компилятор не сможет сгенерировать необходимый код.

Короче вот тут ребята заморочились и написали библиотеку, которая делает то, что тебе надо. Написана в основном на С. Насколько я понял С++ вызовы тоже поддерживаются. Для того, чтобы этого достичь они организовали мини-VM, у которой свой стек, на который можно динамически класть любое количество аргументов и которая "знает" как передаются аргументы и возвращаются значения на той или иной платформе. Достигли они этого, как я и говорил выше, написав некоторое количество кода на ассемблере под каждую поддерживаемую архитектуру и конвенцию вызова. Если хочешь повторять их путь, то изучение исходников этой либы откроет дорогу к просветлению. А лучше просто возьми и пользуйся
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
15.08.2014, 19:03  [ТС]     Альтернативный вызов функции #7
Цитата Сообщение от DrOffset Посмотреть сообщение
не зная тип нельзя ничего сделать.
Так у меня в файле отдельном будут лежать копии определения функций, из них можно и типы узнать. Я же показывал:
C++
1
WINUSERAPI LRESULT WINAPI SendMessageA(HWND,UINT,WPARAM,LPARAM);
Небольшой парсинг по данной строке даст: 1. Тип возвращяемого значения; 2. Кол-во аргументов; 3. Типы аргументов.
Я потому и хотел оператор New[] применить к typedefy, чтоб как то указать кол-во аргументов исходя из данных по функции.
Блин, то что парни сделали - супер наверно, но как то мне не нравится вид... Может как то по другому можно, сторонние библиотеки меня как то не вдохновляют)
DrOffset
6909 / 4102 / 933
Регистрация: 30.01.2014
Сообщений: 6,893
15.08.2014, 19:13     Альтернативный вызов функции #8
Цитата Сообщение от Izual Посмотреть сообщение
Так у меня в файле отдельном будут лежать копии определения функций, из них можно и типы узнать. Я же показывал:
Ты меня невнимательно читаешь
Это динамическая информация, ты ее получишь, когда уже программа УЖЕ скопилирована и выполняет загрузку файл и парсинг. А я под словом "зная" имел в иду "зная на этапе компиляции", потому что скажу еще раз (и уже многие тебе это говорили), что С++ - это язык со статической типизацией, т.е. типы (в том числе и функций) разрешаются на этапе компиляции, а не выполнения.

Добавлено через 1 минуту
Цитата Сообщение от Izual Посмотреть сообщение
Блин, то что парни сделали - супер наверно, но как то мне не нравится вид..
Нормальный там вид, и классов нет, все как ты хотел. Не хочешь использовать - поизучай исходники. Это тема непростая и времени много надо будет, чтобы хотя бы чуть приблизиться к тому, что они сделали.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
15.08.2014, 19:24  [ТС]     Альтернативный вызов функции #9
Цитата Сообщение от DrOffset Посмотреть сообщение
С++ - это язык со статической типизацией, т.е. типы (в том числе и функций) разрешаются на этапе компиляции, а не выполнения.
Вот эта фраза меня за сегодня уже доканала, опять у меня лыжи не едут. Статическая типизация в моём видении означает что всегда надо определять тип, даже переменной заранее, т.е. тогда бы и union как я сделал - не работал бы, если была бы такая статика как вы(уже 4 человека) сказали.
Кстати, я по предыдущей теме сделал функцию изменения переменной и его типа, не выложил, потому что уже и матрицу присобачил и ещё кучу ненужного кода заложил.. Ну это я так, к слову о "статической типизации" =)
DrOffset
6909 / 4102 / 933
Регистрация: 30.01.2014
Сообщений: 6,893
15.08.2014, 19:32     Альтернативный вызов функции #10
Цитата Сообщение от Izual Посмотреть сообщение
Статическая типизация в моём видении означает что всегда надо определять тип, даже переменной заранее, т.е. тогда бы и union как я сделал - не работал бы, если была бы такая статика как вы(уже 4 человека) сказали.
void*, union - это всего лишь способы слегка ослабить систему типов, но от этого она не перестает быть статической. Тебе все равно нужно определить тип. Пусть это union, но это тип и ты должен его указать компилятору.

Цитата Сообщение от Izual Посмотреть сообщение
Кстати, я по предыдущей теме сделал функцию изменения переменной и его типа, не выложил, потому что уже и матрицу присобачил и ещё кучу ненужного кода заложил.. Ну это я так, к слову о "статической типизации" =)
Если кто-то думает, что земля плоская, это не значит, что это так на самом деле. Лучше бы послушал, чем спорить впустую. Ну да ладно, давай подругому тогда: твое право считать меня и всех остальных, кто это сказал людьми, скажем так, заблуждающимися. Тогда позволь узнать какой источник информации ты бы посчитал достоверным, если тебя не убеждают наши слова?
Просто как можно отвечать на твои вопросы, если ты априори считаешь, что мы заблуждаемся?
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
15.08.2014, 19:50  [ТС]     Альтернативный вызов функции #11
Цитата Сообщение от DrOffset Посмотреть сообщение
какой источник информации ты бы посчитал достоверным
Как раз то что ты про юнион сказал и противоречит (ну не явно, но потенциально, что с помощью подобных средств можно достичь того что я хочу и тут, и без всяких ассемблеров и векторов, и т.п. излишествах).

Цитата Сообщение от DrOffset Посмотреть сообщение
считаешь, что мы заблуждаемся?
Просто я знаю на сколько догматичны люди, особенно в наш век, когда ни на шаг от моды(стандартов) нельзя отойти (потому подозреваю даже программисты в нынешнее время на шаблоны перешли, при этом то что я слышу о причинах этого перехода - ну просто бредово, например вот в прошлой теме был совет использовать векторы чтоб утечек памяти не было из за не понимания как работать с delete [], но это же бред, уж лучше знать как правильно программировать чтоб не было утечек, а постоянная практика не даст забыть).
Вы только близко к сердцу не принимайте, а то ещё подумаете что я вас оскорбить пытаюсь, хотя это не так, просто у меня образ мыслей немного иной, да и сам подход.

Так вернёмся к теме.
Вот смотри, если С/C++ такие статические, то "почему раньше можно было без указания прототипа получить адрес функции, а сейчас - нет?" (пост 3): Потому что в С++ появились перегруженные функции.
Далее опять вопрос напрашивается - "почему появились перегруженные функции?" : потому что горе программисты наверно не могут разные имена для функций придумать..
В общем это я свёл к тому что раньше (в Си) можно было реализовать то что мне надо было, а в С++ уже нет.
Кстати, а может есть какой то способ чтоб я в С++ использовал старые стандарты Си касательно этого вопроса?(extern какой нить может)
Запара то только в том что я не могу адрес функции узнать, и из за этого весь сыр бор с аргументами начался.

Добавлено через 2 минуты
П.С.
Цитата Сообщение от DrOffset Посмотреть сообщение
Если кто-то думает, что земля плоская, это не значит, что это так на самом деле.
Так не стоит эту тему поднимать, а то я тебя отправлю смотреть цикл фильмов "Игры Богов", хотя из за того что там через чур много непоняток, то делать бы этого не хотел, это я много духовной литературы изучаю, потому могу в этой теме различать, а для вас это может быть фатально для мировоззрения.
DrOffset
6909 / 4102 / 933
Регистрация: 30.01.2014
Сообщений: 6,893
15.08.2014, 20:07     Альтернативный вызов функции #12
Цитата Сообщение от Izual Посмотреть сообщение
Как раз то что ты про юнион сказал и противоречит (ну не явно, но потенциально, что с помощью подобных средств можно достичь того что я хочу и тут, и без всяких ассемблеров и векторов, и т.п. излишествах).
Нельзя, потому что в отношении типов известных компилятору так или иначе (ты же в union конкретные типы указываешь, не правда ли?) можно делать какие-либо поблажки, ослабляя систему типов до определенного уровня. Но вот когда тип задается извне, как ты хочешь, - это совсем другая песня. Это уже чистая динамическая типизация, и ее можно сделать только в системе, которая ее изначально поддерживает. Вот та библиотека как раз и создала такую систему.

Цитата Сообщение от Izual Посмотреть сообщение
Просто я знаю на сколько догматичны люди, особенно в наш век
Можешь мне не верить, но то, что я тебе сейчас говорю - это факты, голые и беспощадные, а не догматы. Представь себе планету Земля с ее физическими характеристиками, все расчеты, которые выполняются на практике на Земле завязаны на эти характеристики. Мы не можем от них полностью избавиться. Ты согласен с этим? Теперь давай возьмем Марс и обнаружим там другие характеристики, следовательно, например, расчеты завязанные на ускорение свободного падения равное 9.8м/c2 станут для Марса неверны! Значит ли это, что все жители Земли догматичны?
Это я к чему: если тебя не устраивают характеристики системы С++, то надо ее менять. Систему в смысле. Т.е. либо тем путем, что пошли разрабы той библиотеки, либо вообще сменить язык на другой. Скажем на python или php. Там проблемы типизации не стоят так остро.

Цитата Сообщение от Izual Посмотреть сообщение
Потому что в С++ появились перегруженные функции.
Потому, что С++ более строг к типизации, чем С. Это если в общем.

Цитата Сообщение от Izual Посмотреть сообщение
то "почему раньше можно было без указания прототипа получить адрес функции, а сейчас - нет?"
Статическая типизация никуда не делась. Просто это была очередная поблажка от компилятора.
Тип все равно задавался на этапе компиляции, как и положено при статической типизации, но! он задавался неявно. Типы аргументов известны - мы в коде их указали, а тип возвращаемого значения принимался всегда за int. Но в аргументы можно было пихать не всякие типы, поэтому они приводились к нескольким определенным заранее: указатели - к void*, целые типы - к int, дробные - к double.

Цитата Сообщение от Izual Посмотреть сообщение
Кстати, а может есть какой то способ чтоб я в С++ использовал старые стандарты Си касательно этого вопроса?(extern какой нить может)
Есть. Функция возвращающая int и принимающая три точки. Повторяет то поведение, которое раньше было в С встроено, правила этого поведения смотри выше.
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
15.08.2014, 20:26  [ТС]     Альтернативный вызов функции #13
Цитата Сообщение от DrOffset Посмотреть сообщение
Функция возвращающая int и принимающая три точки.
В смысле так?
C++
1
typedef int (*Make_func) (...);
На сколько я знаю если указывать три точки, то надо хотя бы первый аргумент указать явно (в С++), а в случае с тем что я хочу - это не позволительно, т.к. первый аргумент может быть разного типа. Как же тогда быть?
Voivoid
673 / 276 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
15.08.2014, 20:29     Альтернативный вызов функции #14
Цитата Сообщение от Izual Посмотреть сообщение
Так у меня в файле отдельном будут лежать копии определения функций, из них можно и типы узнать. Я же показывал:
Ох, лол, развели демагогию на пустом месте, а надо-то всего на этапе сборки перед компиляцией основного проекта распарсить этот файлик и накодогенерировать хидер который уже в дальнейшем будет подключаться к основному проекту

Цитата Сообщение от Izual Посмотреть сообщение
потому что горе программисты наверно не могут разные имена для функций придумать..
Не-а, потому-что программисты хотят писать выразительный код
DrOffset
6909 / 4102 / 933
Регистрация: 30.01.2014
Сообщений: 6,893
15.08.2014, 20:42     Альтернативный вызов функции #15
Цитата Сообщение от Voivoid Посмотреть сообщение
Ох, лол, развели демагогию на пустом месте, а надо-то всего на этапе сборки перед компиляцией основного проекта распаристь этот файлик и сбацать хидер который уже в дальнейшем будет подключаться к основному проекту
Он, кстати, сказал, что так не хочет - тем более зачем бацать хидер, когда он уже есть, он же функции из winuser.h хочет дергать

Цитата Сообщение от Izual Посмотреть сообщение
На сколько я знаю если указывать три точки, то надо хотя бы первый аргумент указать явно
Это обязательно только если ты хочешь эти аргументы потом из кода достать - т.е. написать реализацию к этому прототипу.
Но насколько ты объяснил, ты хочешь уже готовые функции вызывать, определенные в других модулях. В этом случае главное только, чтобы фактический тип их аргументов не сильно различался с тем, что передано. Естественно никакого контроля не будет, и если ты что-то неправильно передашь, то программа запросто может упасть или выдать неверный результат
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,537
15.08.2014, 20:44  [ТС]     Альтернативный вызов функции #16
Voivoid, противоречите сами себе, как раз из за выразительности кода и хочу сделать так как положено (через GetProcAddress), а вот делать ещё и доп .h файл - вариант будет самый последний ежели не найдётся других решений, согласно исключениям которые я написал.(без stl и векторов ^^)

Кстати, наткнулся на это: http://www.cyberguru.ru/cpp/cpp-lang...p2-page67.html
C++
1
typedef int (*CFT)(void*,void*);
При условии что память под void* будет не меньше чем сама переменная (на сколько я понял).
И
Отметим, что неявное преобразование указателя на что-то в указатель типа void* не выполняется для параметра функции, вызываемой через указатель на нее. Поэтому функцию
C++
1
int cmp3(const mytype*, const mytype*);
нельзя использовать в качестве параметра для sort(). Поступив иначе, мы нарушаем заданное в описании условие, что cmp3() должна вызываться с параметрами типа mytype*. Если вы специально хотите нарушить это условие, то должны использовать явное преобразование типа.
Может что то из этого решит проблему?
DrOffset
6909 / 4102 / 933
Регистрация: 30.01.2014
Сообщений: 6,893
15.08.2014, 20:45     Альтернативный вызов функции #17
Цитата Сообщение от Izual Посмотреть сообщение
Может что то из этого решит проблему?
Это тоже самое, о чем я говорил выше, только вид сбоку.
Voivoid
673 / 276 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
15.08.2014, 20:50     Альтернативный вызов функции #18
Цитата Сообщение от Izual Посмотреть сообщение
из за выразительности кода и хочу сделать так как положено (через GetProcAddress),
Я вообще не понимаю, какая тут связь, это раз. Два - что значит так, как положено? Ты какой цели хочешь вообще всем этим достичь?

Цитата Сообщение от Izual Посмотреть сообщение
Может что то из этого решит проблему?
Если ты считаешь, что от статической типизации вреда больше чем пользы ( ловить ошибки в compile-time? не, лучше падать в рантайме ), то думаю имеет смысл взять динамически типизированный язык, ruby какой-нибудь, там наверняка есть решение твоего вопроса
Програмер_80лвл
15 / 15 / 1
Регистрация: 17.10.2012
Сообщений: 96
Записей в блоге: 1
15.08.2014, 20:54     Альтернативный вызов функции #19
Оффтоп.
Кликните здесь для просмотра всего текста

Izual, Я не пойму одного что ты блин такое пишешь что ты пренебрёгся к динамическим функциям?
я как то предполагаю... но будет лучше если ты сам объяснишь что ты пытаешься сделать, тогда можно будет посмотреть на данную задачу как проблему и по возможности найти другое решение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2014, 20:55     Альтернативный вызов функции
Еще ссылки по теме:

Вызов функции в C++ - C++
есть циклический вызов функции: for (int i=0; i&lt;start; i++) { if (classicZOT())...

Вызов функции - C++
Укажите правильный вариант вызова функции вместо пропуска …….. void func(int *p, int n, float k) { } main( ) { int...

Вызов функции - C++ Builder
В коде создания формы используется процедура: ... DrawSurface(A, B, C, T, drawpoint, X0, Y0, 10); ... Объявление DrawSurface ...

Вызов функции - C++
Помогите пожалуйста решить завтра зачет, а задачу не могу решить последнюю. Составить программу формирования элементов массивов Х, У и...

Вызов функции - C++
Написать вызов функции для строковых переменных, помогите!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DrOffset
15.08.2014, 20:55     Альтернативный вызов функции
  #20

Не по теме:

Цитата Сообщение от Voivoid Посмотреть сообщение
там наверняка есть решение твоего вопроса
Да решение его вопроса было еще на первой странице. Но вот хочет человек сам пройти по всем граблям
Ладно, что-то я устал, пойду-ка я отсюда.

Yandex
Объявления
15.08.2014, 20:55     Альтернативный вызов функции
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru