Why such a scheme is used in GLIBC: declare + define __memrchr, and than # ifdef __USE_GNU # define memrchr(s, c, n) __memrchr ((s), (c), (n)) # endif ? memrchr is not the GNU extension, is it? Thanks in advance.