-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Переход из 32 бит к 64.

Воскресенье, 13 Декабря 2020 г. 14:14 + в цитатник
a_n_y_a: Переменную int A я привел для примера. В проекте переменная А работает в алгоритме, и в некоторых случаях ей присваивается значение количества элементов в векторе. Но в других ветках алгоритма, этой переменной присваивается -1, и это значение имеет конкретный смысл.
По поводу преобразования size_t в int. Эта проблема шире, чем я описал. Например такой код:
    ...::OnPaint()
    {
    ...
    CRect r;
    GetClientRect(r);
    vector mp;
    mp.push_back(CPoint(r.left, r.top)); mp.push_back(CPoint(r.right, r.top));
    mp.push_back(CPoint(r.right, r.bottom)); mp.push_back(CPoint(r.left, r.bottom));
    mp.push_back(CPoint(r.left, r.top));
    dc.Polyline(&(mp[0]), IzSIZE_T__to__int(mp.size()));
    ...
    };

Функция Polyline принимает в параметрах количество элементов массива типа int. Чтобы не создавать массив типа
    CPoint mp[3];

И не указывать количество элементов массива числом, я работаю с вектором. Конечно можно было бы написать:
    dc.Polyline(&(mp[0]), (int)mp.size());

Но в этом случае транслятор выдает предупреждение об ошибке при преобразовании типов. А я очень не люблю предупреждений. И программа с таким кодом будет не защищена от ошибок в процессе выполнения.

Почему программа имеет десятки, если не сотни, подобных странных проектных решений? - Все дело в том, что программа разрабатывалась много лет. Это не коммерческая программа. Сейчас я чищу в программе все слабые места. С функцией преобразования size_t в int программа будет более защищенной. Просто раньше я использовал вариант (int)mp.size(). Теперь решил написать IzSIZE_T__to__int(mp.size()).

https://forum.sources.ru/index.php?showtopic=420996&view=findpost&p=3842807

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку