From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: [Emacs-diffs] master b7fa6b1 1/4: Simplify use of FOR_EACH_TAIL Date: Mon, 6 Feb 2017 17:04:20 -0800 Organization: UCLA Computer Science Department Message-ID: References: <20170205213033.19755.8264@vcs.savannah.gnu.org> <20170205213034.20306220171@vcs.savannah.gnu.org> <96c9c172-8d1f-a452-da68-8a21c2117ed8@lanl.gov> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: blaine.gmane.org 1486430743 3533 195.159.176.226 (7 Feb 2017 01:25:43 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 7 Feb 2017 01:25:43 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 Cc: emacs-devel@gnu.org To: Davis Herring Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Feb 07 02:25:40 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cauXL-0000cj-PH for ged-emacs-devel@m.gmane.org; Tue, 07 Feb 2017 02:25:39 +0100 Original-Received: from localhost ([::1]:51441 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cauXN-00065X-GY for ged-emacs-devel@m.gmane.org; Mon, 06 Feb 2017 20:25:41 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33803) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cauCp-0008A4-DG for emacs-devel@gnu.org; Mon, 06 Feb 2017 20:04:28 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cauCl-0007HK-GL for emacs-devel@gnu.org; Mon, 06 Feb 2017 20:04:27 -0500 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:50186) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cauCl-0007GX-AX for emacs-devel@gnu.org; Mon, 06 Feb 2017 20:04:23 -0500 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id B36A216007E; Mon, 6 Feb 2017 17:04:21 -0800 (PST) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 4PgHDXxqd8CL; Mon, 6 Feb 2017 17:04:20 -0800 (PST) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id B9A4816007F; Mon, 6 Feb 2017 17:04:20 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id thbwcwTHEa7L; Mon, 6 Feb 2017 17:04:20 -0800 (PST) Original-Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 9F6D216007E; Mon, 6 Feb 2017 17:04:20 -0800 (PST) In-Reply-To: <96c9c172-8d1f-a452-da68-8a21c2117ed8@lanl.gov> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:212069 Archived-At: On 02/06/2017 09:38 AM, Davis Herring wrote: > Did you just mean that you couldn't have that variable declared and > also the tortoise integer declared because they were different types > (and you didn't want to open a pair of braces in the macro that would > have to be closed later)? Yes, that sort of thing, although it's not that they are different types. Portable C99 code cannot declare two or more identifiers in the same for-loop, due to an ambiguity in the C99 standard, which says (6.8.5 para 3) "The declaration part of a for statement shall only declare identifiers for objects having storage class auto or register." This constraint can be interpreted as meaning (A) when a for-statement declares an object's name, the name must have storage class auto or register, or (B) all identifiers declared by a for-statement must name objects with storage class auto or register. Although I suspect (A) was intended and that's what GCC does, (B) is also a plausible interpretation and that's what Clang does. Interpretation (B) disallows anonymous structs here, as such structs declare member names.