🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309943

Re: Błąd preprocesora czy czegoś nie rozumiem?

#309943
From: PawelS pawel(at)wbcd(dot)pl
Date: Thu, 03 Oct 2019 21:36
39 lines
2319 bytes
M.M. pisze:
> Witam
> 
> Jest sobie poniższy program i działa:
> 
> #define TEST1( __x__ ) int __x__  = __LINE__
> #define TEST2( __x__ ) int __x__  ## __LINE__ = 0
> 
> int main(int argc, char *argv[]) {
>     TEST1( x );
>     printf( "%d\n" , x );
> //    TEST2( y );
> //    TEST2( y );
>     return 0;
> }
> 
> Jednak jak odkomentuję dwie line:
> //    TEST2( y );
> //    TEST2( y );
> 
> to już mam błąd:
> 
> redeclaration of 'int y__LINE__'
>      TEST2( y );
>             ^
> 
> Od czego zależy kiedy rozwija makro __LINE__ a kiedy nie?
Powyższy błąd nie ma nic wspólnego z "rozwija makro".
Spróbuj sam się wczuć w rolę preprocesora i podstaw sobie makro.
Powyższy problematyczny zapis jak dla mnie (mogę się mylić)
po ... (nie wiem jak to nazwać) przy kompilacji może wyglądać tak:
> //    TEST2( y );
> //    TEST2( y );
> #define TEST2( __x__ ) int __x__  ## __LINE__ = 0
     int __y__  ## __LINE__ = 0;
     int __y__  ## __LINE__ = 0;
niech mnie ktoś poprawi, ale to wygląda trochę jak
podwójna deklaracja tej samej zmiennej,
albo już zbyt zmęczony jestem ...
Technical Details
Message-ID: <5d9669cf$0$543$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!85.12.16.68.MISMATCH!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer04.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <780a7f39-337b-4b6b-810f-7c4151e10f74@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!85.12.16.68.MISMATCH!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer04.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Date: Thu, 03 Oct 2019 23:36:14 +0200
From: "PawelS pawel(at)wbcd(dot)pl" <fake@email.org>
User-Agent: Thunderbird 2.0.0.18 (X11/20081120)
MIME-Version: 1.0
Newsgroups: pl.comp.lang.c
Subject: Re: Błąd preprocesora czy
 czegoś nie rozumiem?
References: <780a7f39-337b-4b6b-810f-7c4151e10f74@googlegroups.com>
In-Reply-To: <780a7f39-337b-4b6b-810f-7c4151e10f74@googlegroups.com>
Lines: 39
Message-ID: <5d9669cf$0$543$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 89.231.96.70
X-Trace: 1570138575 unt-rea-a-02.news.neostrada.pl 543 89.231.96.70:38840
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Bytes: 2180
X-Received-Body-CRC: 360241108
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit