delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:subject:to:references:from:message-id:date | |
:mime-version:in-reply-to:content-type; q=dns; s=default; b=lApT | |
JEZS48Omqy+SS9KEuGa8khF6MMbdugFsMB74yeCYWaMTBnYGSV0UBjdfpL76mFwS | |
/NDAnFSXazu5xUS9ZgB7l1enEwGGgCTNff9VdH7ayZTmtHWOVPNaerCCC3zAWw0m | |
4M94ciQbTS99OwOihwfc4mR6bXGVifaFJI2aWSU= | |
DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:subject:to:references:from:message-id:date | |
:mime-version:in-reply-to:content-type; s=default; bh=41HZu1TbzL | |
EUPRsgcfexsFEAx4Q=; b=nkW13dgUJHjV3sp6Wkx44ABOwkh27vYc3+x3hQIKu3 | |
w7YFMKNxAcy/H3KMci9CkqJkaWqCAyfuDqK/nSit2KWdqbEeGNKoZ5r0opUR0+NM | |
OomeovLBL2fHIs5TYSfri2ztaZFjFqhqJPOW0BS7gtFxyztt9oCvfekUrYi/ixin | |
0= | |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
Authentication-Results: | sourceware.org; auth=none |
X-Virus-Found: | No |
X-Spam-SWARE-Status: | No, score=-5.0 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Shell, drawback, cries, variable's |
X-HELO: | mx1.redhat.com |
Subject: | Re: ssize_t |
To: | cygwin AT cygwin DOT com |
References: | <deac8be3-fa7b-1716-0f2b-6974b183ba26 AT gmail DOT com> <3cd8f4f9-2d22-6018-9f84-6a1312042997 AT redhat DOT com> |
From: | Eric Blake <eblake AT redhat DOT com> |
Openpgp: | url=http://people.redhat.com/eblake/eblake.gpg |
Message-ID: | <1d9dcb7d-8d0a-2e07-0494-cdab900cc455@redhat.com> |
Date: | Thu, 22 Dec 2016 14:19:29 -0600 |
User-Agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 |
MIME-Version: | 1.0 |
In-Reply-To: | <3cd8f4f9-2d22-6018-9f84-6a1312042997@redhat.com> |
X-IsSubscribed: | yes |
--vggerxNAEdaLwEUfd98Erw3PNeD6GxEmg Content-Type: multipart/mixed; boundary="PWM2MTwsqnkHfODa2nFvPv3PmHQ8KplWm"; protected-headers="v1" From: Eric Blake <eblake AT redhat DOT com> To: cygwin AT cygwin DOT com Message-ID: <1d9dcb7d-8d0a-2e07-0494-cdab900cc455 AT redhat DOT com> Subject: Re: ssize_t References: <deac8be3-fa7b-1716-0f2b-6974b183ba26 AT gmail DOT com> <3cd8f4f9-2d22-6018-9f84-6a1312042997 AT redhat DOT com> In-Reply-To: <3cd8f4f9-2d22-6018-9f84-6a1312042997 AT redhat DOT com> --PWM2MTwsqnkHfODa2nFvPv3PmHQ8KplWm Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 12/22/2016 02:14 PM, Eric Blake wrote: >> ssize_t.c:115:22: error: expected expression before =E2=80=98)=E2=80=99 = token >> if (sizeof ((ssize_t))) >> ^ > That's probably SUPPOSED to happen. >=20 > Autoconf tests for type names by comparing: In fact, read the autoconf source code: http://git.sv.gnu.org/cgit/autoconf.git/tree/lib/autoconf/types.m4#n56 # _AC_CHECK_TYPE_NEW_BODY # ----------------------- # Shell function body for _AC_CHECK_TYPE_NEW. This macro implements the # former task of AC_CHECK_TYPE, with one big difference though: AC_CHECK_TYPE # used to grep in the headers, which, BTW, led to many problems until the # extended regular expression was correct and did not give false positives. # It turned out there are even portability issues with egrep... # # The most obvious way to check for a TYPE is just to compile a variable # definition: # # TYPE my_var; # # (TYPE being the second parameter to the shell function, hence $[]2 in m4). # Unfortunately this does not work for const qualified types in C++, where # you need an initializer. So you think of # # TYPE my_var =3D (TYPE) 0; # # Unfortunately, again, this is not valid for some C++ classes. # # Then you look for another scheme. For instance you think of declaring # a function which uses a parameter of type TYPE: # # int foo (TYPE param); # # but of course you soon realize this does not make it with K&R # compilers. And by no means do you want to use this: # # int foo (param) # TYPE param # { ; } # # since C++ would complain loudly. # # Don't even think of using a function return type, since K&R cries # there too. So you start thinking of declaring a *pointer* to this TYPE: # # TYPE *p; # # but you know fairly well that this is legal in C for aggregates which # are unknown (TYPE =3D struct does-not-exist). # # Then you think of using sizeof to make sure the TYPE is really # defined: # # sizeof (TYPE); # # That is great, but has one drawback: it succeeds when TYPE happens # to be a variable: you'd get the size of the variable's type. # Obviously, we must not accept a variable in place of a type name. # # So, to filter out the last possibility, we will require that this fail: # # sizeof ((TYPE)); # # This evokes a syntax error when TYPE is a type, but succeeds if TYPE # is actually a variable. # # Also note that we use # # if (sizeof (TYPE)) # # to `read' sizeof (to avoid warnings), while not depending on its type # (not necessarily size_t etc.). # # C++ disallows defining types inside `sizeof ()', but that's OK, # since we don't want to consider unnamed structs to be types for C++, # precisely because they don't work in cases like that. --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --PWM2MTwsqnkHfODa2nFvPv3PmHQ8KplWm-- --vggerxNAEdaLwEUfd98Erw3PNeD6GxEmg Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJYXDVSAAoJEKeha0olJ0NqshoH/i+JxFgcC4mSZLQkbjFdkIQK WfYVvTD7PMuOgyI7uDrsK+N23ygcHrbQdFBvWLK+1yf+cPtzERFbCZ/R8wX8aZPA xn1hY0oevN5V/KKPrkdcLE3f0vnqqvlkdLesoXP7INDFBezph24tXiiPkvdtJerB jEk0tEjRhd5F2tdcPiq+DMPdAykAlKRKxjQcUX3kxXrW/t2DnEAiVzCXArbFB5S5 96uLp6gM/cLsY4i/exrH1yqV8GKdZBQmTsPrdXmVec5J/a0gaU2IqacaNwZh3HMV cdpVLFh1WmF3pEmMBFbqe2oQtz2TuqQhi0MqLaXmC5UK2fhm6BC8TEIFreN8x9s= =1rkS -----END PGP SIGNATURE----- --vggerxNAEdaLwEUfd98Erw3PNeD6GxEmg--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |