Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив указателей на функции DWORD WINAPI 
V
    Опции темы
popovda
Дата 28.5.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 9.6.2006
Где: Москва

Репутация: нет
Всего: 6



Нужно создать несколько потоков, для чего как известно в CreateThread передается указатель на функцию. Но у меня таких функций несколько - и есть желание объявить массив указателей на функции, чтобы в цикле передавать его элементы. Попытался так:

Прототип функции
DWORD WINAPI Func(void* );

......
Код

//Объявляю тип
typedef DWORD WINAPI (*Func)(void*) PF; 
//И массив
PF pFuncs[N]


Следует ругань на такое объявление. : syntax error : '('

Однако, например, 

Код

//Объявляю тип
typedef int (*Func)(void*) PF; 
//И массив
PF pFuncs[N]


работает. Но это не то, что нужно. Как определить указатель на такие функции?


--------------------
С уважением, Попов Д.А.
PM MAIL   Вверх
Rififi
Дата 28.5.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 2
Всего: 36



Код
DWORD WINAPI ThreadProc(LPVOID);

typedef DWORD (WINAPI *funcptr_t)(LPVOID);

funcptr_t fp = &ThreadProc;

PM MAIL   Вверх
popovda
Дата 28.5.2008, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 9.6.2006
Где: Москва

Репутация: нет
Всего: 6



Тьфу, пропасть. Конечно же! Вот что значит кодить на WinAPI только семестр (даже программированием язык назвать не поворачивается). Я пробовал скобки, но не так. И lpvoid - логично. Всё не как у людей в Linux:)

Спасибо ОГРОМНОЕ!!!!!!!!!!!!!


--------------------
С уважением, Попов Д.А.
PM MAIL   Вверх
Lazin
Дата 29.5.2008, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 8
Всего: 154



Цитата(popovda @  28.5.2008,  21:43 Найти цитируемый пост)
даже программированием язык назвать не поворачивается

WinAPI - это не язык а божья кара интерфейс для программирования Windows приложений, в принципе там все понятно и логично smile 
PM MAIL Skype GTalk   Вверх
popovda
Дата 29.5.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 9.6.2006
Где: Москва

Репутация: нет
Всего: 6



Я не про WinAPI, а про свои знания о нём. Ибо в течении семестра на втором курсе я его изучал, а потом забыл, так как лично мне не по душе было сист. программирование под виндовс. А, если учесть, что это было 5, нет, 6 лет назад, то понять меня можно. 


--------------------
С уважением, Попов Д.А.
PM MAIL   Вверх
jonie
Дата 30.5.2008, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



только как связано незнание языка и winapi никто не узнает...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
popovda
Дата 31.5.2008, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 9.6.2006
Где: Москва

Репутация: нет
Всего: 6



Язык C (да и С++) я знаю. Причём весьма неплохо, раз системным и прикладным (мат. моделирование) программированием под Linux кормлюсь. Опять же весьма неплохо кормлюсь. А вот ковыряться в объявлениях WinAPI и тратить своё драгоценное время на изучение того иснструментария, с которым я вообще не работаю - совсем не желаю. Тем более, что в нашей стране опытных программистов, работающих с WinAPI весьма много, значит и ответ на вопрос я получил бы быстрее, чем сам копался. Так и вышло - не успел кофе допитьsmile Обратите внимание на время вопроса и время ответа.  А хороший программист - это разумный программист, не пишущий лишнего кода, и умеющий пользоваться справочной информациейsmile В том числе опытом и советом более опытных программистов.

Правда, когда дали ответ - очевидный ответ, вспомнилось из Петзольда, что 

#define WINAPI __callback

Соответственно, скобочки надо было там поставитьsmile  

Это сообщение отредактировал(а) popovda - 31.5.2008, 06:02


--------------------
С уважением, Попов Д.А.
PM MAIL   Вверх
ppoger
Дата 31.5.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 14.7.2007

Репутация: нет
Всего: нет



2popovda
неа, 
#define WINAPI __stdcall smile собсна как и  #define CALLBACK __stdcall
PM MAIL   Вверх
jonie
Дата 31.5.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



Цитата

Язык C (да и С++) я знаю. Причём весьма неплохо, раз системным...
А хороший программист - это разумный программист, не пишущий лишнего кода, и умеющий пользоваться справочной информацией...
вот именно этого я и не заметил. что вы и подтвердили своим постом) видимо у нас разные понтия о "неплохих знаниях С\С++"

Это сообщение отредактировал(а) jonie - 31.5.2008, 14:31


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
popovda
Дата 2.6.2008, 14:36 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 9.6.2006
Где: Москва

Репутация: нет
Всего: 6



Хе-хе. 
Цитата

2popovda
неа, 
#define WINAPI __stdcall smile собсна как и  #define CALLBACK __stdcall 

Ну да. Опечатался. И не сразу это заметил.

Так я Вами и воспользовалсяsmile Задача решена, клиент доволен. 

И не передергивайте. Я писал:
Цитата

А хороший программист - это разумный программист, не пишущий лишнего кода, и умеющий пользоваться справочной информациейsmile В том числе опытом и советом более опытных программистов.


Я же сказал, что ради решения простой задачи я не собираюсь в исходнике или Петзольде копаться (а уж ставить Visual Studio и MSDN - тем более. Хотя, беспорно, VC - шикарная ИСР, там знаток кода и подсказки решают часть проблем), так как WinAPI мне впервые за 5 лет понадобилось и всего в одном месте произошёл затык. А раз я получил ответ на свой вопрос, то напрягать свою голову тем, что мне нафиг не нужно в постоянной работе - тратить своё время, которое можно посвятить, например, личной жизни, или хотя бы чашке чая. 

И у нас действительно разные понятия о программировании. Я терпеть не могу кодить. А вот решать сложные задачи оптимальными методами и инструментами - это другой вопрос.



Это сообщение отредактировал(а) popovda - 2.6.2008, 21:52


--------------------
С уважением, Попов Д.А.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0928 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.