Jump to content
    

игнорировать полученный аргумент ф-ии. Как правильно?

Функция получила аргумент. Это прерывание. Это драйвер. Мне этот аргумент не нужен. Понятно, что внутри просто не использую и всё- это допустимо.

Но хочу как-то внутри ф-ии указать, что я помню про него и null или что- то там указать. Где-то видел такое.

Просто код прогоняется через код валидатор, и надо ему красиво показать это. 

Share this post


Link to post
Share on other sites

1 час назад, Метценгерштейн сказал:

Просто код прогоняется через код валидатор, и надо ему красиво показать это. 

void func(int, int b) //1-й аргумент не используется
{
...
}

 

Share this post


Link to post
Share on other sites

void func( int A, int B)
{
. . . .
}

void func( int B) // первый аргумент игнорируется
{
func( 0, B);
}

"сигнатуры" аргументов функций должны отличаться или кол-вом аргументов, или их типом.

Share this post


Link to post
Share on other sites

26 минут назад, k155la3 сказал:
void func( int A, int B)
{
. . . .
}

void func( int B) // первый аргумент игнорируется
{
func( 0, B);
}

"сигнатуры" аргументов функций должны отличаться или кол-вом аргументов, или их типом.

Не понял - к чему это?  :wacko2:

Share this post


Link to post
Share on other sites

23 минуты назад, jcxz сказал:

Не понял - к чему это?  :wacko2:

Вызов ф-ии с одним аргументом аналогичен вызову с двумя, где первый не используется и = 0.

Share this post


Link to post
Share on other sites

54 минуты назад, k155la3 сказал:

Вызов ф-ии с одним аргументом аналогичен вызову с двумя, где первый не используется и = 0.

Так у ТС только одна функция - с несколькими аргументами, где один не используется. Очевидно - какая-то callback-функция, вызываемая из готового драйвера. Поэтому ваша инфа ему никак не поможет.

Share this post


Link to post
Share on other sites

В функции, описывающей прерывание, аргументы как бы и не передаются, им просто не от куда взяться, прерывание - асинхронный процесс.

Если же функция с аргументом - типа коллбэка из прерывания, тогда либо вообще не указывайте аргумент изначально (зачем он вам?), либо используйте int argument __attribute__((unused))

Share this post


Link to post
Share on other sites

1 час назад, Variant99 сказал:

...тогда либо вообще не указывайте аргумент изначально (зачем он вам?)...

Зачем, зачем... Прототип колбэков потому что единый, а в разных ситуациях аргумент может быть нужен или нет.

Share this post


Link to post
Share on other sites

Единый или не единый, но каждый аргумент отнимает ресурсы - ОЗУ и инструкции копирования. Вот и говорю - зачем он там, где не нужно.  Незря же кодовалидатор делает замечание.

Share this post


Link to post
Share on other sites

1 hour ago, Variant99 said:

им просто не от куда взяться

В Cortex'ах есть прерывание SVC. Там можно передать и получить аргумент. Тыц.

4 minutes ago, Variant99 said:

но каждый аргумент отнимает ресурсы - ОЗУ

Если речь снова о "кортексах", а скорее всего о них, т.к. их большинство, то первые четыре 32-битных аргумента передаются через регистры r0 - r3. ОЗУ вообще не используется.

Share this post


Link to post
Share on other sites

КАК? Прерывание вызывается аппаратным воздействием, из таблицы векторов берется адрес перехода на функцию, реализующую обработку прерывания, и исполнение кода начинается с указанного адреса. 
Прототип функции такой же, как и везде:

/** 
  * @brief  SVCall exception.
  */
void SVC_Handler(void)
{
}

Тип аргумента - void

Share this post


Link to post
Share on other sites

4 minutes ago, Variant99 said:

КАК

Поглядите ссылку. Я же её приложил.

4 minutes ago, Variant99 said:

Прерывание вызывается аппаратным воздействием

Не обязательно. Можно и программно вызывать.

 

Share this post


Link to post
Share on other sites

52 минуты назад, Variant99 сказал:

Единый или не единый, но каждый аргумент отнимает ресурсы - ОЗУ и инструкции копирования.

Еще раз: если уже есть некий прототип колбэка, вызываемого из прерывания, то юзер должен предоставить обработчик, прототип которого будет соответствовать прототипу колбэка. И обработчик прерывания вызывает колбэки абсолютно одинаково, а юзер в своей функции уже сам решает, использовать ему аргумент или нет.

P.S. Чтобы понять, попытайтесь написать исходник примера.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...