Not certain if this is a bug or why cpp doesn't report it, but: /usr/include/signal.h has: #define sigmask(sig) __sigmask(sig) /usr/include/sys/select.h has: extern int pselect (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, const struct timespec *__restrict __timeout, const __sigset_t *__restrict __sigmask); <======== ISTM that cpp should issue at least a warning of a redefinition of the symbol. Platform (output of uname -a): Linux redhot 2.6.9-55.ELsmp #1 SMP Fri Apr 20 16:36:54 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux Compiler (output of gcc -v): Reading specs from /usr/lib/gcc/x86_64-redhat-linux/3.4.6/specs Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-java-awt=gtk --host=x86_64-redhat-linux Thread model: posix gcc version 3.4.6 20060404 (Red Hat 3.4.6-8) Glibc version is 2.3.4.
No, there is no problem and no warning should be issued. The parameter declaration doesn't apply to the macro definition since the macro expects parameters.