Перейти к содержанию
    

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Variant99 said:

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

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

4 minutes ago, Variant99 said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, Variant99 said:

КАК

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

4 minutes ago, Variant99 said:

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...