реклама на сайте
подробности

 
 
> IAR ARM, C. Что означает такая запись?, Функция объявлена без типов
Dreamer
сообщение Aug 5 2009, 14:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 13-01-06
Из: Санкт-Петербург
Пользователь №: 13 154



В демке, приложенной к отладочной плате, встретил вот такой код:
Код
#if __CORE__ < 7

inline __arm ExtCritSection(Save)
{
  unsigned long tmp;
  tmp = __get_CPSR();
  __set_CPSR(tmp & (Save | ~IRQ_FLAG));
}

#elif  __CORE__ == 7

inline void ExtCritSection(void)
{
  if(--CriticalSecCntr == 0)
  {
    asm("CPSIE i");
  }
}


По идее, это объявление функции (макрос на строку "ExtCritSection") не нашел, значит, это имя функции.
Но тогда каким образом компилятор съедает функцию, объявленную без типа возвращаемого значения и без типа аргумента?
Имеется в виду первая ветка препроцессора, в котрой выполняется условие(#if __CORE__ < 7).

К ключевому слову __arm нашел такое объяснение, оно, как я понял, не отменяет правило именования функций, а лишь указывает, что она исполняется в арм-режиме:
Цитата
The __arm keyword makes a function execute in ARM mode. An __arm declared function can, unless it is also declared __interwork, only be called from functions that also execute in ARM mode.


--------------------
Все врут (с) /M.D.House/
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 05:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016