|
24 / 24 / 5
Регистрация: 04.04.2012
Сообщений: 107
|
|
Кто отвечает за корректность аргументов функции?22.07.2019, 19:23. Показов 6435. Ответов 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 | |
|
Кто отвечает на форумах? Чат не отвечает, пока кто-либо не подключится
Вычислить значение функции и вывести на печать значения функции и аргументов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|