Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определения, глупый вопрос 
:(
    Опции темы
gepard
  Дата 19.5.2004, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Никак не могу догнать: вот есть __stdcall, а есть описание #define WINAPI __stdcall. Ведь по сути один хрен что использовать WINAPI или __stdcall. Тогда зачем нужно было описывать WINAPI, если можно писать __stdcall? Объясните чайнику.
Почему я спрашиваю? Просто уже не раз на это натыкался. Например, описание: #define FLOAT float. И почему многие используют FLOAT, а не просто float.



--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Anklav
Дата 19.5.2004, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Для переносимости.
PM ICQ   Вверх
bel_nikita
Дата 19.5.2004, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Дело в том что #define ты можешь всегда изменить, a __stdcall нет. hehe.gif
Пример: #define WINAPI __stdcall можно спокойно заметить на #define WINAPI __cdecl
И твой софт работает по новому, без лишних телодвижений smile.gif
А прикинь если не было дефайна - геммор полный был бы wink.gif

Это сообщение отредактировал(а) bel_nikita - 19.5.2004, 12:20


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
chipset
Дата 19.5.2004, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



А вот меня всегда мучал вопрос зачем GLfloat и GLsizei etc....
Для переносимости? Разве типа float нету на Маках или на *nix?


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
setq
Дата 19.5.2004, 16:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











я думаю это сделано для того, чтобы прилетевшие с марса существа могли без проблем перенести quake на свои компьютеры.
  Вверх
Anklav
Дата 19.5.2004, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

А вот меня всегда мучал вопрос зачем GLfloat и GLsizei etc....
Для переносимости? Разве типа float нету на Маках или на *nix?


А где гарантия того, что тот же float будет такого же размера и на Win, и на Mak. Видь даже в любом справочнике/учебнике по C/C++ ничего толком не говорится, какого размера должны быть типы данных.

Вот пример программы:
Код

#include <iostream>

using namespace std;

int main()
{
   cout << "float       - " << sizeof(float) << endl;
   cout << "double      - " << sizeof(double) << endl;
   cout << "long double - " << sizeof(long double) << endl;
   cout << "int         - " << sizeof(int) << endl;
   cout << "long        - " << sizeof(long) << endl;
   cout << "short       - " << sizeof(short) << endl;
   return 0;
}


И вот то что вывело у меня под Windows (VC++ 6):
Код

float       - 4
double      - 8
long double - 8
int         - 4
long        - 4
short       - 2


А это под Linux (gcc):
Код

float       - 4
double      - 8
long double - 12
int         - 4
long        - 4
short       - 2


Как видно отличия только в типе long double, но не известно, как поведёт себя эта программа где-нибудь ещё.

А вот GLfloat, GLint и т.д., дают гарантию того, что программа будет вести себя везде одинаково

Это сообщение отредактировал(а) Anklav - 19.5.2004, 16:41
PM ICQ   Вверх
Sined
Дата 19.5.2004, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Строго говоря, для того, чтобы отличить свои апи от апей привнесенных(например созданных пользователем). Как замена одного красивого слова другим может повлиять на переносимость я в силу своей ограниченности понять не могу.
PM MAIL   Вверх
chipset
Дата 20.5.2004, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



typedef int GLint;
вот такое в хидере gl.h, но int то одинаковые!
хотя кажется в Turbo C он 2 байта...


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
sergejzr
Дата 20.5.2004, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



  • Переносимости!?
    Кто виндовские функции (типа винапи) куда переносит? Или я ошибаюсь?
  • Размер?
    Он опрашивается sizeof всё! И то если от него действительно что то зависит, что согласитесь далеко не везде так ( где используются дефайны).
  • Единственно bel_nikita ещё можно понять и то это заморочка...

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

Так что пока поддерживаю мнение Sined'а. Пока конечно кто нибудь не приведёт действительно веского аргумента для этого безобразия.

________________________________________________________________________________________
PS: Где то я уже говорил, что при виде микрософтского кода создаётся впечатление, что во первых не существует концепта, во вторых его писало минимум 20 разных людей и в третьих, что так и не дописало. smile.gif


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
chipset
Дата 20.5.2004, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Я тоже пока поддерживаю Sined 'овское мнение... Вот тока может в реализации под какую нибудь другую систему, будет другой хидер...?



--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
DenDen
Дата 20.5.2004, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
PS: Где то я уже говорил, что при виде микрософтского кода создаётся впечатление, что во первых не существует концепта, во вторых его писало минимум 20 разных людей и в третьих, что так и не дописало
.
У мелкомягких больше 10000 человек штата, даже если учесть, что 90% из них менеджеры, то 1000 человек нечем заниматься(так что 20 это весьма приуменьшенная оценка). Насчет их кода 1 могу сказать--после дизассмблироания он выглядит достаточно красиво и логично...кусками. Единственное, что может и тут наблюдается эффект толпы--большая(!) группа из программистов(какие бы они ни были) пишет хуже, чем самый слабый из этой группы.

PM MAIL   Вверх
Anklav
Дата 20.5.2004, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



MSDN:
Цитата

One of the major design goals of the 32-bit Windows was to minimize the effort required to port existing 16-bit Windows-based applications. However, some changes were mandated by the larger address space. Pointers, handles, and graphics coordinates were widened to 32 bits.


When porting your code from 16-bit Windows to 32-bit Windows, you may need to revise code that uses functions that are no longer supported. However, the majority of Windows functions are supported or maintained for backward compatibility. If you are updating your code or creating new code, do not use the functions maintained only for backward compatibility. Instead, use the new functions introduced in the Windows API. It is possible to call functions in Win32-based DLLs (including the system DLLs) from a 16-bit application. Generic thunks provide a mechanism for 16-bit applications to call functions in Win32-based DLLs.


Наверно это не сильный аргумент, но всё-таки.

Цитата

typedef int GLint;
вот такое в хидере gl.h, но int то одинаковые!
хотя кажется в Turbo C он 2 байта...

Ну допистем, что где-небудь на 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 мне никогда не нравилось.
PM ICQ   Вверх
Sined
Дата 20.5.2004, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вопрос вкуса.
#defin'ы-- довольно простой способ сделать код лаконичнее и изящнее.
Мне также жутко не нравилось в gcc вставлять struct во все дыры.
Переносимость дело, конечно, хорошее, но учитывая, что почти с каждой новой версией меняются нафиг апи, вопрос стоит довольно абстрактно.

PM MAIL   Вверх
gepard
Дата 20.5.2004, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ок, пипл. Короче это нах*й не надо. Разве что удобства при кодинге. Нет я просто слышал, что там какая-то перегрузка прёт. hmmm.gif
Ну а почему тогда юзают FLOAT, а не float?
И LONGLONG, а не __int64?

Это сообщение отредактировал(а) gepard - 20.5.2004, 15:01


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
DENNN
Дата 20.5.2004, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата
Пока конечно кто нибудь не приведёт действительно веского аргумента для этого безобразия.

Я приведу. У меня есть приложение, работающее с БД. В качестве идентификаторов в MYSQL используются целые числа, а в MSSQL GUID.
для того, чтоб скомпилить проект под какой-то сервер, достаточно изменить несколько дефайнов.
P.S. кроме того, еще несколько дефайнов отвечают за то, как будет выглядеть интерфейс на любой платформе: XP или классика виндоус.

PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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