Detailed Description
Макросы для упрощения доступа к GCC-атрибутам для функций и переменных, которые могут быть применены к прототипам функции или атрибутам переменной. 
Define Documentation
      
        
          | #define ATTR_ALIAS | 
          ( | 
            | 
          Func | ) | 
             __attribute__ ((alias( #Func ))) | 
        
      
 
Помечает функцию как ссылку (алиас, псевдоним) на другую функцию.
- Parameters:
 - 
  
    | [in] | Func | имя функции, у которой появится новый псевдоним в качестве заданного имени.  | 
  
   
 
 
      
        
          | #define ATTR_ALWAYS_INLINE   __attribute__ ((always_inline)) | 
        
      
 
Принуждает компилятор встроить код функции вместо её вызова. Когда атрибут применен, то в любом случае тело функции будет встроено в код без генерации вызова. 
 
 
      
        
          | #define ATTR_CONST   __attribute__ ((const)) | 
        
      
 
Показывает, что указанная функция является константой, т. е. не производит никаких побочных действий (side effects), за исключением доступа к переменным параметров. 
 
 
      
        
          | #define ATTR_DEPRECATED   __attribute__ ((deprecated)) | 
        
      
 
Помечает указанную функцию как устаревшую, в результате любой её вызов будет сопровождаться проедупреждением компилятора. 
 
 
      
        
          | #define ATTR_INIT_SECTION | 
          ( | 
            | 
          SectionIndex | ) | 
             __attribute__ ((naked, section (".init" #SectionIndex ))) | 
        
      
 
Размещает код функции в одной из секций инициализации, которая выполняется перед запуском главной функции (main) приложения. Обратитесь к руководству avr-libc для подробностей по секциям инициализации.
- Parameters:
 - 
  
    | [in] | SectionIndex | номер секции инициализации, где должна быть размещена функция  | 
  
   
 
 
      
        
          | #define ATTR_NAKED   __attribute__ ((naked)) | 
        
      
 
Удаляет из функции любую преамбулу или постамбулу. Когда атрибут применен, то функция не будет иметь какого-либо кода для сохранения регистров или стека. Должно использоваться с предосторожностями, и в этом случае программист сам отвечает за целостность стека и работу регистров. 
 
 
      
        
          | #define ATTR_NO_INIT   __attribute__ ((section (".noinit"))) | 
        
      
 
Принуждает компилятор не обнулять автоматически при старте программы указанную глобальную переменную. В этом случае текущее содержимое RAM, соответствующее этой переменной, будет сохранено. В большинстве случаев эначения в RAM будут случайны, так как при выключении питания volatile-память не сохраняет свое состояние, но это может использоваться в некоторых специальных случаях, например при передаче переменных обратно в программу при сбросе системы по сторожевому таймеру (watchdog reset). 
 
 
      
        
          | #define ATTR_NO_INLINE   __attribute__ ((noinline)) | 
        
      
 
Защищает компилятор от встраивания (inlining) указанной функции. Когда атрибут применен, то вызов функции ни при каких обстоятельствах не будет заменен встраиванием кода. 
 
 
      
        
          | #define ATTR_NO_RETURN   __attribute__ ((noreturn)) | 
        
      
 
Показывает компилятору, что из функции не будет никогда произведен возврат, в результате чего в результирующем коде могут быть опущены восстановление стека или процедуры возврата. 
 
 
      
        
          | #define ATTR_NON_NULL_PTR_ARG | 
          ( | 
            | 
          ... | ) | 
             __attribute__ ((nonnull (__VA_ARGS__))) | 
        
      
 
Показывает, что указанные параметры функции являются указателями, которые никогда не должны быть равны NULL. Когда атрибут прикладывается как разделенный запятыми единично-базовый (1-based) список, то компилятор будет выдавать предупреждение, если при компиляции будет известно, что в точке вызова функции параметр равен NULL. 
 
 
      
        
          | #define ATTR_PURE   __attribute__ ((pure)) | 
        
      
 
Показывает, что указанная функция чиста, т. е. не производит побочных действий (side-effects), за исключением доступа к глобальным переменным или переменным параметров. 
 
 
      
        
          | #define ATTR_WARN_UNUSED_RESULT   __attribute__ ((warn_unused_result)) | 
        
      
 
Показывает, что функция возвращает значение, которое должно игнорироваться кодом пользователя. Когда атрибут применен, то любой возврат из функции с игнорированием результата будет генерировать предупреждение компилятора. 
 
 
      
        
          | #define ATTR_WEAK   __attribute__ ((weak)) | 
        
      
 
Помечает указанную функцию как слабую, которая может быть отменена любыми другими функциями с идентичным именем (в этом случае "слабая" функция будет отброшена при линковке).