|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
|
Кто отвечает за корректность аргументов функции?22.07.2019, 19:23. Показов 6394. Ответов 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 | |
|
Кто отвечает на форумах? Чат не отвечает, пока кто-либо не подключится
Вычислить значение функции и вывести на печать значения функции и аргументов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов
• Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp
• Смежный проект:. . .
|
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат
Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
|
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1)
Сложность: Medium
Источник: LeetCode 380
Задача
Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
|
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли.
Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
|
|
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack
Сложность: Medium
Источник: LeetCode 155
Задача:
Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1).
Методы:
|
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача
Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
Сигнатура
func Fetch(urls string, maxConcurrent int) Result
Пример
urls :=. . .
|
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition)
Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|