Article View: pl.comp.lang.c
Article #309943Re: Błąd preprocesora czy czegoś nie rozumiem?
From: PawelS pawel(at)wbcd(dot)pl
Date: Thu, 03 Oct 2019 21:36
Date: Thu, 03 Oct 2019 21:36
39 lines
2319 bytes
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-mailReferences:
<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