From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by sourceware.org (Postfix) with ESMTPS id 16085385608E for ; Sat, 28 May 2022 05:48:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 16085385608E Received: by mail-wr1-x435.google.com with SMTP id v17so4042523wrv.2 for ; Fri, 27 May 2022 22:48:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:content-transfer-encoding:from:mime-version:date :subject:message-id:to; bh=a8b52jVRg5cDDbcJ0Ny5TBORLHZ5AzwUyAm6H3yEUwY=; b=Hv1lVzW5zLc3vfSsRAPAMTEaf2m4y1SJulLA9S8CAuVBy5iQLS7/CX2LJQ8DdQHRbJ zWXM5jlZ7kTSqNWA4vVjHlKhf/LrUbkpd943d4pIJZoXkV1t/cu8mwWDNtsCDsyf6NN1 PXnPK+Q3OSUIqKKPH5rbTZXPI2vRjF1oIp7CUTxiWScShKMnTnOEOCg3QL01gGfvcZi7 54Lq1uNISyNt6H/xfcNE3RP3ED9zmS+O24/uv0MT7xG0GtVOzsvMGifrmQkNWszMPR49 j9XGSmaRt1Gm+y4+FOEXyvqTAFQJdQJpi2+fUTVU9NfmRRr4EeuzBgS0hPZO4gHDrJ4N W/lg== X-Gm-Message-State: AOAM5302h46lsKoZI2NwE9fTbgI90hlHNoTcxBGqhLTHmrgAV1hw1DU3 nPmUHQn5EeyTYuIWpKFB4TN4fZAK5Vo= X-Google-Smtp-Source: ABdhPJwCl7FqzG/GnthOl08iZ1qv9vCCjVvoDIx6IMDGlcdZOHfpgh9CfRT7MMZYnWTuBZr0B1ABSg== X-Received: by 2002:a5d:5145:0:b0:210:55c:4790 with SMTP id u5-20020a5d5145000000b00210055c4790mr10480051wrt.714.1653716913185; Fri, 27 May 2022 22:48:33 -0700 (PDT) Received: from smtpclient.apple ([87.70.165.177]) by smtp.gmail.com with ESMTPSA id v8-20020adfedc8000000b0020d012692dbsm3837426wro.18.2022.05.27.22.48.32 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 27 May 2022 22:48:32 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable From: Yair Lenga Mime-Version: 1.0 (1.0) Date: Sat, 28 May 2022 08:48:31 +0300 Subject: Passing c blocks to pre processor Message-Id: <76AFCA00-04E9-4AC7-9587-E88779AD85AE@gmail.com> To: gcc@gcc.gnu.org X-Mailer: iPad Mail (19E258) X-Spam-Status: No, score=1.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Level: * X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 May 2022 05:48:36 -0000 Hi, I am trying to define macros that will accept code blocks. This will be used= to create high level structures (like iterations, etc.). Ideally, I would l= ike to do something like (this is simplified example, actual code much more a= pplication specific): Foreach(var, low, high, block) While should translate to: For (int var=3Dlow ; var < high ; var ++) block=20 The challnge is the gcc pre processor does not accept blocks. It assume a co= mma terminate a block. For example: Foreach(foo, 1, 30, { int z=3D5, y=3D3, =E2=80=A6}) will invoke the macro wi= th 5 arguments: (1) foo (2) 1, (3) 30, (4) { int z=3D5}, (5) y=3D3, Is there a way to tell CPP that an argument that start with =E2=80=98{=E2=80= =98 should extend until the matching =E2=80=98}=E2=80=99 ? Similar to the wa= y =E2=80=98(=E2=80=98 in macro arguments will extend till matching =E2=80=98= )=E2=80=99. Thanks, yair. Sent from my iPad=