// Undefined DEFINE_FUNC_ATTRIBUTES and undefined DEFINE_EMPTY_ATTRIBUTES // leaves file with untouched FUNC_ATTR_* macros. This variant is used for // scripts/gen_declarations.lua. // // Empty macros are used for *.c files. // (undefined DEFINE_FUNC_ATTRIBUTES and defined DEFINE_EMPTY_ATTRIBUTES) // // Macros defined as __attribute__((*)) are used by generated header files. // (defined DEFINE_FUNC_ATTRIBUTES and undefined DEFINE_EMPTY_ATTRIBUTES) // FUNC_ATTR_* macros should be in *.c files for declarations generator. If you // define a function for which declaration is not generated by // gen_declarations.lua (e.g. template hash implementation) then you should use // REAL_FATTR_* macros. // gcc and clang expose their version as follows: // // gcc 4.7.2: // __GNUC__ = 4 // __GNUC_MINOR__ = 7 // __GNUC_PATCHLEVEL = 2 // // clang 3.4 (claims compat with gcc 4.2.1): // __GNUC__ = 4 // __GNUC_MINOR__ = 2 // __GNUC_PATCHLEVEL = 1 // __clang__ = 1 // __clang_major__ = 3 // __clang_minor__ = 4 // // To view the default defines of these compilers, you can perform: // // $ gcc -E -dM -