X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/5e7319058268e021ae39ca4b9fcabaec0060117b..7e1e23af5969b0553aa498e11cac021e4eee04c4:/LUFA/Common/Attributes.h?ds=sidebyside diff --git a/LUFA/Common/Attributes.h b/LUFA/Common/Attributes.h index 1cedaa98c..53cfb6df1 100644 --- a/LUFA/Common/Attributes.h +++ b/LUFA/Common/Attributes.h @@ -29,7 +29,7 @@ */ /** \file - * \brief AVR-GCC special function/variable attribute macros. + * \brief GCC special function/variable attribute macros. * * \copydetails Group_GCCAttributes * @@ -39,15 +39,15 @@ /** \ingroup Group_Common * \defgroup Group_GCCAttributes Function/Variable Attributes - * \brief AVR-GCC special function/variable attribute macros. + * \brief GCC special function/variable attribute macros. * - * This file contains macros for applying GCC specific attributes to functions and variables to control various + * This module contains macros for applying GCC specific attributes to functions and variables to control various * optimiser and code generation features of the compiler. Attributes may be placed in the function prototype * or variable declaration in any order, and multiple attributes can be specified for a single item via a space * separated list. * * On incompatible versions of GCC or on other compilers, these macros evaluate to nothing unless they are - * critical to the code's function and thus must throw a compiler error when used. + * critical to the code's function and thus must throw a compile error when used. * * @{ */ @@ -133,6 +133,17 @@ * \param[in] Func Name of the function which the given function name should alias. */ #define ATTR_ALIAS(Func) __attribute__ ((alias( #Func ))) + + /** Marks a variable or struct element for packing into the smallest space available, omitting any + * alignment bytes usually added between fields to optimize field accesses. + */ + #define ATTR_PACKED __attribute__ ((packed)) + + /** Indicates the minimum alignment in bytes for a variable or struct element. + * + * \param[in] Bytes Minimum number of bytes the item should be aligned to. + */ + #define ATTR_ALIGNED(Bytes) __attribute__ ((aligned(Bytes))) #endif /** @} */