{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

Optimize optimizesize noinline these macros describe

Info iconThis preview shows pages 28–31. Sign up to view the full content.

View Full Document Right Arrow Icon
__OPTIMIZE__ __OPTIMIZE_SIZE__ __NO_INLINE__ These macros describe the compilation mode. __OPTIMIZE__ is defined in all optimizing compilations. __OPTIMIZE_SIZE__ is defined if the compiler is op- timizing for size, not speed. __NO_INLINE__ is defined if no functions will be inlined into their callers (when not optimizing, or when inlining has been specifically disabled by ‘ -fno-inline ’). These macros cause certain GNU header files to provide optimized definitions, using macros or inline functions, of system library functions. You should not use these macros in any way unless you make sure that programs will execute with the same effect whether or not they are defined. If they are defined, their value is 1. __GNUC_GNU_INLINE__ GCC defines this macro if functions declared inline will be handled in GCC’s traditional gnu90 mode. Object files will contain externally visible definitions of all functions declared inline without extern or static . They will not contain any definitions of any functions declared extern inline .
Background image of page 28

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Chapter 3: Macros 25 __GNUC_STDC_INLINE__ GCC defines this macro if functions declared inline will be handled according to the ISO C99 standard. Object files will contain externally visible definitions of all functions declared extern inline . They will not contain definitions of any functions declared inline without extern . If this macro is defined, GCC supports the gnu_inline function attribute as a way to always get the gnu90 behavior. Support for this and __GNUC_GNU_ INLINE__ was added in GCC 4.1.3. If neither macro is defined, an older version of GCC is being used: inline functions will be compiled in gnu90 mode, and the gnu_inline function attribute will not be recognized. __CHAR_UNSIGNED__ GCC defines this macro if and only if the data type char is unsigned on the target machine. It exists to cause the standard header file ‘ limits.h ’ to work correctly. You should not use this macro yourself; instead, refer to the standard macros defined in ‘ limits.h ’. __WCHAR_UNSIGNED__ Like __CHAR_UNSIGNED__ , this macro is defined if and only if the data type wchar_t is unsigned and the front-end is in C ++ mode. __REGISTER_PREFIX__ This macro expands to a single token (not a string constant) which is the prefix applied to CPU register names in assembly language for this target. You can use it to write assembly that is usable in multiple environments. For example, in the m68k-aout environment it expands to nothing, but in the m68k-coff environment it expands to a single ‘ % ’. __USER_LABEL_PREFIX__ This macro expands to a single token which is the prefix applied to user labels (symbols visible to C code) in assembly. For example, in the m68k-aout envi- ronment it expands to an ‘ _ ’, but in the m68k-coff environment it expands to nothing. This macro will have the correct definition even if ‘ -f(no-)underscores ’ is in use, but it will not be correct if target-specific options that adjust this prefix are used (e.g. the OSF/rose ‘ -mno-underscores ’ option).
Background image of page 29
Chapter 3: Macros 26 __SIZE_TYPE__ __PTRDIFF_TYPE__ __WCHAR_TYPE__ __WINT_TYPE__ __INTMAX_TYPE__
Background image of page 30

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Image of page 31
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}