From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6083 invoked by alias); 31 Jul 2002 22:21:00 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 6052 invoked by uid 61); 31 Jul 2002 22:20:59 -0000 Date: Wed, 31 Jul 2002 15:21:00 -0000 Message-ID: <20020731222059.6051.qmail@sources.redhat.com> To: gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, gnicholls@bluephoenixsolutions.com, nobody@gcc.gnu.org From: neil@gcc.gnu.org Reply-To: neil@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, gnicholls@bluephoenixsolutions.com, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: preprocessor/7457: failure preprocessing ## directive X-SW-Source: 2002-07/txt/msg00825.txt.bz2 List-Id: Synopsis: failure preprocessing ## directive State-Changed-From-To: open->closed State-Changed-By: neil State-Changed-When: Wed Jul 31 15:20:59 2002 State-Changed-Why: Not a bug - please understand what ## means. It means: "take the spelling of the LHS, and the spelling of the RHS, and concatenate the two to form a new token. If the concatenation does not form a valid token, anything goes.". You are trying to create a token "libdrv"".so" which is not a token (it's two tokens). However, if you just drop the !@#$%^& ##, then you're OK: two strings concatenate to become one string by the rules of C (post macro expansion and preprocessing). Please read a good description of what ## does. Yes, GCC is getting more picky. That's a good thing. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7457