Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.BINKD
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.BINKD с датами от 14 Jul 13 17:53:22 до 25 Aug 24 19:42:02, всего сообщений: 1947
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 57 из 1947 =========================================== RU.BINKD =
От   : Pavel Gulchouck                  2:463/68           18 Oct 13 11:15:22
Кому : Roman Trunov                                        18 Oct 13 11:15:22
Тема : То ли лыжи не едут...
FGHI : area://RU.BINKD?msgid=2:463/68+5260f11e
На   : area://RU.BINKD?msgid=2:5022/2+52614fdc
= Кодировка сообщения определена как: CP866 ==================================
Ответ: area://RU.BINKD?msgid=2:5020/4441.1+5261108b
==============================================================================
Hi Roman!

18 Oct 13, Roman Trunov ==> Pavel Gulchouck:

PG>> Hет ли у MSVC опции считать int (или хотя бы long) 64-битным на 64-битной
PG>> системе? Боюсь, если handle (socket, size_t, time_t, void* и т.д.) по
PG>> размеру больше, чем int, там ещё много граблей вылезет. :(

RT> Микрософт в своем репертуаре. С переходом на 64-битность прототипы некоторых библиотечных функций MSVC ВHЕЗАПHО
RT> изменились. Hапример, если в VC2000 мы видим

RT> long _findfirst(const char *, struct _finddata_t *);

RT> то в последних версиях это уже

RT> intptr_t _findfirst(const char *filespec, struct _finddata_t *fileinfo);

RT> где intptr_t - целочисленный тип, в который влезет закастованный указатель. Hа архитектуре amd64 это int64.

RT> Решение на самом деле очень простое - один раз таки прочитать ВСЕ предупреждения компилятора про преобразования int64
RT> => int и разобраться с ними на месте (на time_t обычно можно забить, если только оно не в printf идет, остальные
RT> пофиксить)

Обычно так и делается.
Проблемы две: во-первых, с появлением новой версии компилятора появляются новые предупреждения (как в том примере, что ты привёл), а во-вторых, исправление предупреждения для одного компилятора/системы/архитектуры может привести к появлению предупреждений или ошибок для другого компилятора/системы/архитектуры. Если там прописать intptr_t - точно ли оно будет собираться и без ошибок работать под mingw, например? Там вообще есть такой тип? Поэтому, чтобы исправлять, недостаточно посмотреть на warnings, нужно представлять себе, как это исправление скажется в других случаях. Благо, обсуждаемое место специфично для винды, и тестировать его под unix и os/2 не нужно.

А стандартных (переносимых) средств нет для многих базовых задач. В этом случае проблема вызвана отсутствием в MSVC функций opendir()/readdir()/closedir(), т.е. нельзя даже прочитать содержимое каталога так, чтобы это было переносимо. :-(

              Lucky carrier,
                           Паша
                           aka  gul@gul.kiev.ua
--- GoldED+/LNX 1.1.5
* Origin: printf("%s", "How can I increase performance?\n"); (2:463/68)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.080075 секунды