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