00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MPD_GCC_H
00021 #define MPD_GCC_H
00022
00023 #define GCC_CHECK_VERSION(major, minor) \
00024 (defined(__GNUC__) && \
00025 (__GNUC__ > (major) || \
00026 (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor))))
00027
00028
00029
00030
00031
00032
00033
00034 #if GCC_CHECK_VERSION(3,0)
00035 # define gcc_must_check __attribute__ ((warn_unused_result))
00036 # define gcc_packed __attribute__ ((packed))
00037
00038 # define gcc_printf __attribute__ ((format(printf,1,2)))
00039 # define gcc_fprintf __attribute__ ((format(printf,2,3)))
00040 # define gcc_fprintf_ __attribute__ ((format(printf,3,4)))
00041 # define gcc_fprintf__ __attribute__ ((format(printf,4,5)))
00042 # define gcc_scanf __attribute__ ((format(scanf,1,2)))
00043 # define gcc_used __attribute__ ((used))
00044
00045 # define gcc_noinline __attribute__ ((noinline))
00046 # define gcc_nonnull(...) __attribute__((nonnull(__VA_ARGS__)))
00047 # define gcc_nonnull_all __attribute__((nonnull))
00048 #else
00049 # define gcc_must_check
00050 # define gcc_packed
00051 # define gcc_printf
00052 # define gcc_fprintf
00053 # define gcc_fprintf_
00054 # define gcc_fprintf__
00055 # define gcc_scanf
00056 # define gcc_used
00057
00058 # define gcc_noinline
00059 # define gcc_nonnull(...)
00060 # define gcc_nonnull_all
00061 #endif
00062
00063 #endif