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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.73
Saiberg
19 / 19 / 1
Регистрация: 23.09.2010
Сообщений: 193
#1

Переопределение типа(typedef) - C++

07.10.2010, 08:48. Просмотров 5229. Ответов 5
Метки нет (Все метки)

Не как не могу разобраться что такое StartDLL/Startup в данном случае

C++
1
2
3
typedef void (*Startup)();
 
Startup StartDll;
Можете записать то, что выше без typedef ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2010, 08:48     Переопределение типа(typedef)
Посмотрите здесь:

Определение типа через typedef - C++
То-ли я пересидел, то-ли я просто этого не знаю, но все же. Через typedef определить 1) массив из 7 указателей на целые числа. Как не...

Переопределение типа - C++
В windows.h все типы имеют переопределения вида LONG, UCHAR и так далее. Понятно, что это обычные типы long и unsigned char, но вот в чем...

Как правильно пользоваться typedef для декларации типа указателя на функцию? - C++
Мне нужны будут функции, принимающие параметр-указатель на функции с одним и тем же списком параметров и возвращаемым типом. Как правильно...

Как грамотно нтерпретировать ввод нового имени типа, введённого typedef - C++
Друзья! Дело в том, что вот такой вот код: typedef char (*char6) ; И он значит, что char6 есть указатель на строку из шести...

Переопределение типа class - C++
Подскажите в чем ошибка??? Не могу никак разобраться. "Ошибка 1 error C2011: zvetnik: переопределение типа...

visual studio 2012 - ошибка "переопределение типа" - C++
имею head.h #include <stdio.h> #include <iostream> #include <Windows.h> #pragma comment(lib, "ws2_32") using namespace...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.10.2010, 11:25     Переопределение типа(typedef) #2
для C++ пустые скобки - это типа void
для C - это старый стиль объявлений (до 89 года)

C++
1
void (*StartDll)();
это указатель на функцию, принимающую void, возвращающую void
чтобы каждый раз это дело не писать, эта штука упрощается
ещё на её основе можно делать ещё более сложные типы, в которых, если делать их вручную, можно запутаться
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
07.10.2010, 11:28     Переопределение типа(typedef) #3
typedef void (*Startup)(); //определение типа: указателя на функцию.

Startup StartDll; //создания указателя на функцию.

указателю StartDll можно присвоить адрес функции: имеющей прототип описанный в определении
типа указателя.

Если StartDll хранит адрес функции, то функцию через него можно вызывать(косвенно).

Прмер использования:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
typedef void (*Startup)();
 
void f(){cout<<"Hello\n";}         //реализация функции f.
 
int main(){
Startup StartDll = f;                //записываем адрес функции
StartDll();                             //вызываем функцию через указатель.
system("pause");
return 0;
}
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
07.10.2010, 12:11     Переопределение типа(typedef) #4
Терминологически typedef - это не переопределение типа, и даже не определение типа :-) Более точно, typedef создает синоним для чего-то. В данном случае, читается так: "Startup является синонимом для указателя на функцию, не принимающую никаких аргументов, и возвращающую void."
Saiberg
19 / 19 / 1
Регистрация: 23.09.2010
Сообщений: 193
07.10.2010, 12:50  [ТС]     Переопределение типа(typedef) #5
2Genius Ignat

Не могли бы вы записать тоже самое без typedef ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2010, 13:06     Переопределение типа(typedef)
Еще ссылки по теме:

Переопределение оператора "меньше" пользовательского типа для работы с set - C++
Понимаю, что чтобы хранить в set элементы некоторого класса, нужно переопределить оператор &lt; для этого класса. Оператор переопределен,...

C2011 переопределение типа "enum" RFMapTool c:\dxsdk\include\d3d8types.h - C++
Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка C2011 _D3DZBUFFERTYPE: переопределение типа...

Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" - C++
Что я сделал не правильно? typedef struct ElementsList { struct ElementsList *Prev; struct ElementsList *Next; ...

Ошибка "error C2011: переопределение типа" - C++
struct Tunit { public : int team; int team_agricultural; POINT location; POINT moveLocation; float max_helf; ...

Компилятор выдаёт ошибку: error C2011: Confection::Date: переопределение типа "struct". Как исправить? - C++
#pragma once #pragma warning #ifndef Confection_H #define Confection_H #include &lt;string&gt; #include &quot;Filling.h&quot; using namespace...

Переопределение типа "class" - C++
Как я понял, ошибка &quot;переопределение типа &quot;class&quot;&quot; означает что класс уже был где-то объявлен, однако у меня он вроде нигде больше не...


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

Или воспользуйтесь поиском по форуму:
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
07.10.2010, 13:06     Переопределение типа(typedef) #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
void (*Startup)();
 
void f(){cout<<"Hello\n";}        
 
int main(){
Startup = f;              
Startup();                           
system("pause");
return 0;
}
Yandex
Объявления
07.10.2010, 13:06     Переопределение типа(typedef)
Ответ Создать тему
Опции темы

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