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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> smart pointer-ы, работает даже тогда когда не должно..... 
:(
    Опции темы
Master01
Дата 22.9.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(mes @ 22.9.2008,  15:27)
Цитата(Master01 @  22.9.2008,  15:22 Найти цитируемый пост)
а что вручную написать virtual HRESULT __stdcall - очень большая ошибка? 

дело в том , что __sdtcall предназначен для функций, а не для методов, и возможна такая реализация компилятора, где
определенный посредством директивы __stdcall метод, будет не соответствовать реальному соглашению о вызове.
Тогда как макрос STDMETHOD гарантирует соответствие.

Добавлено @ 15:29
Цитата(Master01 @  22.9.2008,  15:22 Найти цитируемый пост)
а что вручную написать virtual HRESULT __stdcall - очень большая ошибка? 

такая же как вместо этого написать virtual long __stdcall

вот только что-то мне слабо вериться в существование такого компилятора, а ещё меньше в то, что он станет достаточно популярным на рынке ....

По поводу сравнения с HRESULT - тут наверно имелась ввиду информативность кода. Согласен, что при взгляде на макрос сразу ясно с какой функцией мы емеем дело... но опять же насколько это нужно?

Лично моё мнение, что использование данного макроса должно носить скорее рекомендательный характер, нежели обязательный.

ну давольно, по-моему мы увлеклись smile

PM MAIL   Вверх
Lazin
Дата 22.9.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Master01 @  22.9.2008,  16:04 Найти цитируемый пост)
Лично моё мнение, что использование данного макроса должно носить скорее рекомендательный характер, нежели обязательный.

ну здесь уже каждый сам себе злобный буратина, жизнь научит smile 


PM MAIL Skype GTalk   Вверх
mes
Дата 22.9.2008, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Master01 @  22.9.2008,  16:04 Найти цитируемый пост)
вот только что-то мне слабо вериться в существование такого компилятора, а ещё меньше в то, что он станет достаточно популярным на рынке ....

Дело не только в компиляторе,а в программисте.
написать STDMETHOD во первых гораздо легче и безопаснее , чем virtual __stdcall HRESULT - одно слово вместо трех,
а во вторых переносимее, потому что нужно всего будет определить один дефайн под конкретный компилятор.

Добавлено @ 16:17
Цитата(Master01 @  22.9.2008,  16:04 Найти цитируемый пост)

Лично моё мнение, что использование данного макроса должно носить скорее рекомендательный характер, нежели обязательный.

ага рекомендательный. Но рекомендация возникла не на пустом месте )

Цитата(Lazin @  22.9.2008,  16:11 Найти цитируемый пост)
ну здесь уже каждый сам себе злобный буратина, жизнь научит smile 

 smile

Цитата(Master01 @  22.9.2008,  16:04 Найти цитируемый пост)
что-то мне слабо вериться в

а вот реализация макроса взятая с msdn :
Код


#ifdef _WIN32   // Win32 doesn't support __export
   #define STDMETHODCALLTYPE     __stdcall
#else
   #define STDMETHODCALLTYPE     __export __stdcall
#endif

#define STDMETHOD(method)     virtual HRESULT STDMETHODCALLTYPE method

тут видно различие под разные платформы, а этого уже достаточно в качестве аргументации использования макроса. 



Это сообщение отредактировал(а) mes - 22.9.2008, 16:24


--------------------
PM MAIL WWW   Вверх
Master01
Дата 22.9.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(mes @ 22.9.2008,  16:16)
тут видно различие под разные платформы, а этого уже достаточно в качестве аргументации использования макроса.

ну, ок, убедили smile
буду переучиваться.

PM MAIL   Вверх
J0ker
Дата 22.9.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



__stdcall не является частью стандарта, поэтому использование такого кода будет существенно ограничено
и во-вторых дефолт - __cdecl - вы усложняете работу пользователям ваших классов


--------------------
user posted image
PM MAIL   Вверх
Master01
Дата 22.9.2008, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(J0ker @ 22.9.2008,  17:55)
__stdcall не является частью стандарта, поэтому использование такого кода будет существенно ограничено
и во-вторых дефолт - __cdecl - вы усложняете работу пользователям ваших классов

я ещё раз повторяю что это только лишь пример. О каком ограничении может идти речь? - она не будет работать на той системе, на которой я её написал? и каким пользователям? себе самому что ли

PM MAIL   Вверх
J0ker
Дата 22.9.2008, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Master01 @  22.9.2008,  18:25 Найти цитируемый пост)
я ещё раз повторяю что это только лишь пример. О каком ограничении может идти речь? - она не будет работать на той системе, на которой я её написал? и каким пользователям? себе самому что ли

да ладно, не нервничайте  smile 
мы все поняли


--------------------
user posted image
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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