bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: sys_un: New module.


From: Bruno Haible
Subject: Re: sys_un: New module.
Date: Fri, 26 Jul 2024 11:19:50 +0200

Hi Collin,

> I had assumed GNULIB_NAMESPACE was supposed to be defined in C++ tests.
> Is that incorrect? I don't know C++ namespaces much.

The GNULIB_NAMESPACE is an optional setting, see
https://www.gnu.org/software/gnulib/manual/html_node/A-C_002b_002b-namespace-for-gnulib.html

Since it is optional, some unit tests turn it on while some other unit tests
don't.

Generally, working in C++ without GNULIB_NAMESPACE is more tricky,
because the '#define foo rpl_foo' replacements cause trouble each time
'foo' occurs in another context.

> Here is some expirementation I did. Using the following testdir:
> 
>     $ gnulib-tool --create-testdir --with-all-tests --dir testdir sys_un 
> memchr
> 
> Using clang and clang++ on master:
> 
>     # clang version 18.1.6 (Fedora 18.1.6-3.fc40)
>     $ ./configure CC='clang' CXX='clang++'
>     $ make
>     [...]
>     In file included from test-sys_un-c++.cc:24:
>     In file included from /usr/include/sys/un.h:38:
>     ../gllib/string.h:809:20: error: declaration of 'memchr' has a different 
> language linkage
>       809 | _GL_CXXALIASWARN1 (memchr, void *,
>           |                    ^
>     /usr/include/string.h:94:1: note: previous definition is here
>        94 | memchr (void *__s, int __c, size_t __n) __THROW
>           | ^
>     In file included from test-sys_un-c++.cc:24:
>     In file included from /usr/include/sys/un.h:38:
>     ../gllib/string.h:812:20: error: declaration of 'memchr' has a different 
> language linkage
>       812 | _GL_CXXALIASWARN1 (memchr, void const *,
>           |                    ^
>     /usr/include/string.h:100:1: note: previous definition is here
>       100 | memchr (const void *__s, int __c, size_t __n) __THROW
>           | ^
>     2 errors generated.
>     make[4]: *** [Makefile:1958: test-sys_un-c++.o] Error 1
>     $ echo $?
>     2
> 
> After removing the GNULIB_NAMESPACE definition in
> gltests/test-sys_un-c++.cc:
> 
>     # clang version 18.1.6 (Fedora 18.1.6-3.fc40)
>     $ ./configure CC='clang' CXX='clang++'
>     $ make
>     [...]
>     $ echo $?
>     0

Ah, interesting...

Bruno






reply via email to

[Prev in Thread] Current Thread [Next in Thread]