delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2016/12/22/15:20:21

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--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019