On Mar  5 17:16, Christian Franke via Cygwin wrote:
> Roland Mainz via Cygwin wrote:
> > Small issue with Cygwin 3.6 (3.6.0-0.419.g3c1308ed890e.x86_64) system
> > /usr/include/unistd.h and clang:
> > ---- snip ----
> > $ clang --version
> > clang version 8.0.1 (tags/RELEASE_801/final)
> > Target: x86_64-unknown-windows-cygnus
> > Thread model: posix
> > InstalledDir: /usr/bin
> > $ clang -std=gnu17 -Wall -Wextra -g foo.c -lntdll -o foo.i686.exe
> > In file included from foo.c:37:
> > In file included from /usr/include/unistd.h:4:
> > /usr/include/sys/unistd.h:218:42: error: parameter name omitted
> > static inline void setproctitle_init (int, char *[], char *[]) {}
> 
> The error is valid because the addition of this very old C++ feature took a
> very long time :-)
> 
> clang 15 says:
> warning: omitting the parameter name in a function definition is a C2x
> extension [-Wc2x-extensions]
> 
> gcc 12 requires '-pedantic' option:
> warning: ISO C does not support omitting parameter names in function
> definitions before C2X [-Wpedantic]

Weird, I can't reproduce this, neither with gcc 12 nor with gcc 15.

  $ cat <<EOF >x.c
  #define _BSD_SOURCE
  #include <unistd.h>

  int
  main (int argc, char **argv, char **envp)
  {
    setproctitle_init (argc, argv, envp);
  }
  EOF
  $ gcc -g -O2 -Wall -pedantic -std=c99 x.c -o x
  $ 

No warning.  What am I missing?

We should still fix it.  We could change this to a macro instead:

-static inline void setproctitle_init (int, char *[], char *[]) {}
+#define setproctitle_init(c, a, e)

Would that help?


Corinna

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to