Метценгерштейн 0 3 ноября, 2022 Опубликовано 3 ноября, 2022 · Жалоба Функция получила аргумент. Это прерывание. Это драйвер. Мне этот аргумент не нужен. Понятно, что внутри просто не использую и всё- это допустимо. Но хочу как-то внутри ф-ии указать, что я помню про него и null или что- то там указать. Где-то видел такое. Просто код прогоняется через код валидатор, и надо ему красиво показать это. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 3 ноября, 2022 Опубликовано 3 ноября, 2022 · Жалоба (void)unused_arg; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Метценгерштейн 0 3 ноября, 2022 Опубликовано 3 ноября, 2022 · Жалоба вроде да, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 3 ноября, 2022 Опубликовано 3 ноября, 2022 · Жалоба 1 час назад, Метценгерштейн сказал: Просто код прогоняется через код валидатор, и надо ему красиво показать это. void func(int, int b) //1-й аргумент не используется { ... } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 3 ноября, 2022 Опубликовано 3 ноября, 2022 · Жалоба void func( int A, int B) { . . . . } void func( int B) // первый аргумент игнорируется { func( 0, B); } "сигнатуры" аргументов функций должны отличаться или кол-вом аргументов, или их типом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 3 ноября, 2022 Опубликовано 3 ноября, 2022 · Жалоба 26 минут назад, k155la3 сказал: void func( int A, int B) { . . . . } void func( int B) // первый аргумент игнорируется { func( 0, B); } "сигнатуры" аргументов функций должны отличаться или кол-вом аргументов, или их типом. Не понял - к чему это? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 3 ноября, 2022 Опубликовано 3 ноября, 2022 · Жалоба 23 минуты назад, jcxz сказал: Не понял - к чему это? Вызов ф-ии с одним аргументом аналогичен вызову с двумя, где первый не используется и = 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 3 ноября, 2022 Опубликовано 3 ноября, 2022 · Жалоба 54 минуты назад, k155la3 сказал: Вызов ф-ии с одним аргументом аналогичен вызову с двумя, где первый не используется и = 0. Так у ТС только одна функция - с несколькими аргументами, где один не используется. Очевидно - какая-то callback-функция, вызываемая из готового драйвера. Поэтому ваша инфа ему никак не поможет. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Variant99 7 12 ноября, 2022 Опубликовано 12 ноября, 2022 · Жалоба В функции, описывающей прерывание, аргументы как бы и не передаются, им просто не от куда взяться, прерывание - асинхронный процесс. Если же функция с аргументом - типа коллбэка из прерывания, тогда либо вообще не указывайте аргумент изначально (зачем он вам?), либо используйте int argument __attribute__((unused)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 12 ноября, 2022 Опубликовано 12 ноября, 2022 · Жалоба 1 час назад, Variant99 сказал: ...тогда либо вообще не указывайте аргумент изначально (зачем он вам?)... Зачем, зачем... Прототип колбэков потому что единый, а в разных ситуациях аргумент может быть нужен или нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Variant99 7 12 ноября, 2022 Опубликовано 12 ноября, 2022 · Жалоба Единый или не единый, но каждый аргумент отнимает ресурсы - ОЗУ и инструкции копирования. Вот и говорю - зачем он там, где не нужно. Незря же кодовалидатор делает замечание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 12 ноября, 2022 Опубликовано 12 ноября, 2022 · Жалоба 1 hour ago, Variant99 said: им просто не от куда взяться В Cortex'ах есть прерывание SVC. Там можно передать и получить аргумент. Тыц. 4 minutes ago, Variant99 said: но каждый аргумент отнимает ресурсы - ОЗУ Если речь снова о "кортексах", а скорее всего о них, т.к. их большинство, то первые четыре 32-битных аргумента передаются через регистры r0 - r3. ОЗУ вообще не используется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Variant99 7 12 ноября, 2022 Опубликовано 12 ноября, 2022 · Жалоба КАК? Прерывание вызывается аппаратным воздействием, из таблицы векторов берется адрес перехода на функцию, реализующую обработку прерывания, и исполнение кода начинается с указанного адреса. Прототип функции такой же, как и везде: /** * @brief SVCall exception. */ void SVC_Handler(void) { } Тип аргумента - void Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 12 ноября, 2022 Опубликовано 12 ноября, 2022 · Жалоба 4 minutes ago, Variant99 said: КАК Поглядите ссылку. Я же её приложил. 4 minutes ago, Variant99 said: Прерывание вызывается аппаратным воздействием Не обязательно. Можно и программно вызывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 12 ноября, 2022 Опубликовано 12 ноября, 2022 · Жалоба 52 минуты назад, Variant99 сказал: Единый или не единый, но каждый аргумент отнимает ресурсы - ОЗУ и инструкции копирования. Еще раз: если уже есть некий прототип колбэка, вызываемого из прерывания, то юзер должен предоставить обработчик, прототип которого будет соответствовать прототипу колбэка. И обработчик прерывания вызывает колбэки абсолютно одинаково, а юзер в своей функции уже сам решает, использовать ему аргумент или нет. P.S. Чтобы понять, попытайтесь написать исходник примера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться