|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
|
Кто отвечает за корректность аргументов функции?22.07.2019, 19:23. Показов 6502. Ответов 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 | |
|
Кто отвечает на форумах? Чат не отвечает, пока кто-либо не подключится
Вычислить значение функции и вывести на печать значения функции и аргументов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|