![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Никак не могу догнать: вот есть __stdcall, а есть описание #define WINAPI __stdcall. Ведь по сути один хрен что использовать WINAPI или __stdcall. Тогда зачем нужно было описывать WINAPI, если можно писать __stdcall? Объясните чайнику.
Почему я спрашиваю? Просто уже не раз на это натыкался. Например, описание: #define FLOAT float. И почему многие используют FLOAT, а не просто float. -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
Anklav |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.12.2003 Где: Менск Репутация: нет Всего: 1 |
Для переносимости.
|
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Дело в том что #define ты можешь всегда изменить, a __stdcall нет.
![]() Пример: #define WINAPI __stdcall можно спокойно заметить на #define WINAPI __cdecl И твой софт работает по новому, без лишних телодвижений ![]() А прикинь если не было дефайна - геммор полный был бы ![]() Это сообщение отредактировал(а) bel_nikita - 19.5.2004, 12:20 |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
А вот меня всегда мучал вопрос зачем GLfloat и GLsizei etc....
Для переносимости? Разве типа float нету на Маках или на *nix? --------------------
|
|||
|
||||
setq |
|
|||
Unregistered |
я думаю это сделано для того, чтобы прилетевшие с марса существа могли без проблем перенести quake на свои компьютеры.
|
|||
|
||||
Anklav |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.12.2003 Где: Менск Репутация: нет Всего: 1 |
А где гарантия того, что тот же float будет такого же размера и на Win, и на Mak. Видь даже в любом справочнике/учебнике по C/C++ ничего толком не говорится, какого размера должны быть типы данных. Вот пример программы:
И вот то что вывело у меня под Windows (VC++ 6):
А это под Linux (gcc):
Как видно отличия только в типе long double, но не известно, как поведёт себя эта программа где-нибудь ещё. А вот GLfloat, GLint и т.д., дают гарантию того, что программа будет вести себя везде одинаково Это сообщение отредактировал(а) Anklav - 19.5.2004, 16:41 |
||||||||
|
|||||||||
Sined |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
Строго говоря, для того, чтобы отличить свои апи от апей привнесенных(например созданных пользователем). Как замена одного красивого слова другим может повлиять на переносимость я в силу своей ограниченности понять не могу.
|
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
typedef int GLint;
вот такое в хидере gl.h, но int то одинаковые! хотя кажется в Turbo C он 2 байта... --------------------
|
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Мне кажется тема очень хорошая, сам не перестаю удивляться таким оборотам. Одно могу сказать, что также использовал дефайны, когда меня не били по рукам и мне гдето не хотелось заморачиваться красотой кода. Вообще то - ужасное решение. Так что пока поддерживаю мнение Sined'а. Пока конечно кто нибудь не приведёт действительно веского аргумента для этого безобразия. ________________________________________________________________________________________ PS: Где то я уже говорил, что при виде микрософтского кода создаётся впечатление, что во первых не существует концепта, во вторых его писало минимум 20 разных людей и в третьих, что так и не дописало. ![]() |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Я тоже пока поддерживаю Sined 'овское мнение... Вот тока может в реализации под какую нибудь другую систему, будет другой хидер...?
--------------------
|
|||
|
||||
DenDen |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 25.3.2004 Репутация: нет Всего: нет |
У мелкомягких больше 10000 человек штата, даже если учесть, что 90% из них менеджеры, то 1000 человек нечем заниматься(так что 20 это весьма приуменьшенная оценка). Насчет их кода 1 могу сказать--после дизассмблироания он выглядит достаточно красиво и логично...кусками. Единственное, что может и тут наблюдается эффект толпы--большая(!) группа из программистов(какие бы они ни были) пишет хуже, чем самый слабый из этой группы. |
|||
|
||||
Anklav |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.12.2003 Где: Менск Репутация: нет Всего: 1 |
MSDN:
Наверно это не сильный аргумент, но всё-таки.
Ну допистем, что где-небудь на unix тип int занимает 8 байт(а не 4, как на win), а тип short int - 4. Ну вот тогда в хидере gl.h напишут typedef short int GLint вместо typedef int GLint P.S: Сам не люблю эти typedef и #define, и поэтому даже если и пишу под win, то вместо всяких там UINT, BYTE ... - пишу unsigned int, char. Ещё больше всего меня убивает что-то типа LPCSTR, LPBYTE. И даже HWND мне никогда не нравилось. |
||||
|
|||||
Sined |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
Вопрос вкуса.
#defin'ы-- довольно простой способ сделать код лаконичнее и изящнее. Мне также жутко не нравилось в gcc вставлять struct во все дыры. Переносимость дело, конечно, хорошее, но учитывая, что почти с каждой новой версией меняются нафиг апи, вопрос стоит довольно абстрактно. |
|||
|
||||
gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Ок, пипл. Короче это нах*й не надо. Разве что удобства при кодинге. Нет я просто слышал, что там какая-то перегрузка прёт.
![]() Ну а почему тогда юзают FLOAT, а не float? И LONGLONG, а не __int64? Это сообщение отредактировал(а) gepard - 20.5.2004, 15:01 -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Я приведу. У меня есть приложение, работающее с БД. В качестве идентификаторов в MYSQL используются целые числа, а в MSSQL GUID. для того, чтоб скомпилить проект под какой-то сервер, достаточно изменить несколько дефайнов. P.S. кроме того, еще несколько дефайнов отвечают за то, как будет выглядеть интерфейс на любой платформе: XP или классика виндоус. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |