X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/28a1ee29a1a200c8e8c76355a9036a7456425bc3..0210fa5648b1ed65caa384f966ac40b4ecc489ae:/LUFA/Common/Attributes.h diff --git a/LUFA/Common/Attributes.h b/LUFA/Common/Attributes.h index ad6882769..bb0741729 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,10 +39,10 @@ /** \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 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 + * optimizer 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. * @@ -85,13 +85,13 @@ */ #define ATTR_NAKED __attribute__ ((naked)) - /** Prevents the compiler from considering a specified function for inlining. When applied, the given - * function will not be inlined under any circumstances. + /** Prevents the compiler from considering a specified function for in-lining. When applied, the given + * function will not be in-lined under any circumstances. */ #define ATTR_NO_INLINE __attribute__ ((noinline)) /** Forces the compiler to inline the specified function. When applied, the given function will be - * inlined under all circumstances. + * in-lined under all circumstances. */ #define ATTR_ALWAYS_INLINE __attribute__ ((always_inline)) @@ -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 /** @} */