|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
|
Кто отвечает за корректность аргументов функции?22.07.2019, 19:23. Показов 6546. Ответов 72
Вопрос к знатокам стандарта или просто ведующим.
В языке c за корректность аргументов обычно отвечает вызывающая сторона. Т.е. если ты вызываешь printf("%d", some_int) и подставляешь туда нечто не int, то это твои проблемы потом удивляться, недоумевать или возмущаться на некорректный вывод или уход в даун. А с++ какая практика?
1
|
|
| 22.07.2019, 19:23 | |
|
Ответы с готовыми решениями:
72
Есть функция с кучей аргументов, как её вызвать в другой функции (если половины аргументов у меня нет)? Странное расположение в памяти аргументов функции с неизвестным количество аргументов
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 22.07.2019, 23:27 | ||||
|
особенно, если учесть, что это - ответ на цитату, где речь о вызывающей стороне. в профессиональной разработке после первого же Добавлено через 1 минуту
0
|
||||
|
Комп_Оратор)
|
|||
| 22.07.2019, 23:28 | |||
![]() rams, я согласен по духу, но rams, вот простой пример. std::vector не отслеживает границ в операторе индексирования, но имеет метод at(size_t)https://ru.cppreference.com/w/... /vector/at где такая проверка производится (за отдельную плату). А решать, платить или нет - пользователю. Об этом я и говорю. Проверять перед вызовом, труднее, но можно сэкономить общее время выполнения. Вы думаете данный пример, новость для присутствующих? Нет. Но смотреть и видеть, - не одно и то же самое.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 22.07.2019, 23:35 | ||||
|
почему такое вообще могло произойти? либо программная ошибка где-то в алгоритмах. либо человеческий фактор (кто-то налажал, напутал, etc) значит должен стоять assert(min <= max);Добавлено через 1 минуту Добавлено через 53 секунды std::vector этот метод завезли - это для меня вопрос.
0
|
||||
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
|
| 22.07.2019, 23:47 [ТС] | |
|
int getRand(int min, int max){
if(min > max) ...?//Ну и на фига if(min > 0) if(max >0) if(max <= MAX) if if } or int rnd = getRand(-1,1);//boom this function not working, required another function or overload
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 23.07.2019, 01:53 | ||
|
0
|
||
|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
||
| 23.07.2019, 04:20 [ТС] | ||
1
|
||
|
Комп_Оратор)
|
||
| 23.07.2019, 09:24 | ||
|
Это сложно и не надёжно в по мере возрастания сложности, но это путь к повышению скорости. Где-то оправдано, а где-то нет. Проверки в самой функции гарантируют полный пакет в каждом вызове. Хорошо защищённый код похож на танковый полк. Мощно и непробиваемо. У нас споры тоже что-то из этого напоминают. В каждом танке - светлая голова. Иногда снаружи. Танкист блондин, - идеальный воин.
0
|
||
|
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
||
| 23.07.2019, 09:25 | ||
|
0
|
||
|
Комп_Оратор)
|
||
| 23.07.2019, 09:29 | ||
|
И всё же. Давайте так: источник, цитата, контекст. Интересно увидеть.
0
|
||
|
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
||||||||||
| 23.07.2019, 09:51 | ||||||||||
|
Вспомним функции WinAPI. Еще со времен Юрского периода у многих из них возвращаемым значением является HRESULT, который в закодированном виде представляет статус выполненной операции. По его значению можно понять, что произошло и что было не так с аргументами. При всём потоке кала с сторону Windows это ИМХО хороший стиль написания функций.
Добавлено через 3 минуты Добавлено через 4 минуты Добавлено через 6 минут Добавлено через 6 минут Кстати, в STL многие функции имеют именно такой интерфейс (функция связана с окружением по данным и по формату параметров), что гарантирует корректность аргументов и не требует проверки. В качестве примера приведем шаблон копирования:
0
|
||||||||||
|
Комп_Оратор)
|
||||
| 23.07.2019, 10:50 | ||||
vector это самая людная/модная/центральная часть. А оператор индексирования - неотъемлемая часть vector. Тут нет ни чего случайного. Кроме мнений ряда профессионалов about.Добавлено через 5 минут
0
|
||||
|
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|||
| 23.07.2019, 11:05 | |||
|
Добавлено через 3 минуты
0
|
|||
|
Комп_Оратор)
|
||||
| 23.07.2019, 11:14 | ||||
|
jugu, это уже не имеет смысла. Вы думаете выбор от [] до at(size_type) случаен? Тема данного топика : цитата из jugu, пламенные предостережения о том, что тех кто отступится от пути истинного ждёт неотвратимая и внезапная кара из любых мест в любые точки организма, - средневековый подход.
0
|
||||
|
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|||
| 23.07.2019, 11:23 | |||
![]() Добавлено через 3 минуты
0
|
|||
|
Комп_Оратор)
|
|||||||
| 23.07.2019, 12:08 | |||||||
О том, что проверка внутри функции надёжнее никто не спорил.
0
|
|||||||
|
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
||
| 23.07.2019, 12:15 | ||
|
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 23.07.2019, 12:16 | ||
|
1
|
||
| 23.07.2019, 12:16 | |
|
Кто отвечает на форумах? Чат не отвечает, пока кто-либо не подключится
Вычислить значение функции и вывести на печать значения функции и аргументов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|