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

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

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

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

07.10.2010, 08:48. Просмотров 5070. Ответов 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)
Посмотрите здесь:

C++ Определение типа через typedef
Как грамотно нтерпретировать ввод нового имени типа, введённого typedef C++
Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" C++
C++ Ошибка "error C2011: переопределение типа"
visual studio 2012 - ошибка "переопределение типа" C++
Переопределение типа C++
C++ Переопределение типа class
Переопределение типа "class" C++
Как правильно пользоваться typedef для декларации типа указателя на функцию? C++
C++ Компилятор выдаёт ошибку: error C2011: Confection::Date: переопределение типа "struct". Как исправить?
C++ C2011 переопределение типа "enum" RFMapTool c:\dxsdk\include\d3d8types.h
Переопределение оператора "меньше" пользовательского типа для работы с set C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 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
1233 / 771 / 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
Эксперт С++
2910 / 1238 / 78
Регистрация: 27.05.2008
Сообщений: 3,321
07.10.2010, 12:11     Переопределение типа(typedef) #4
Терминологически typedef - это не переопределение типа, и даже не определение типа :-) Более точно, typedef создает синоним для чего-то. В данном случае, читается так: "Startup является синонимом для указателя на функцию, не принимающую никаких аргументов, и возвращающую void."
Saiberg
 Аватар для Saiberg
19 / 19 / 1
Регистрация: 23.09.2010
Сообщений: 193
07.10.2010, 12:50  [ТС]     Переопределение типа(typedef) #5
2Genius Ignat

Не могли бы вы записать тоже самое без typedef ?
Genius Ignat
1233 / 771 / 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)
Ответ Создать тему
Опции темы

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