🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: stała mapa enum -> wartość

#310519
From: heby
Date: Mon, 11 Mar 2024 16:36
38 lines
2928 bytes
On 11/03/2024 17:18, JDX wrote:
>> Tutaj muszę wygenerować jednorazowo 256 bajtów. Pisanie do tego 
>> "generatora" jest mało sensowne.
> Nie bardzo rozumiem w czym jest problem. Tzn. rozumiem, że funkcję
> Bar = f(Foo) masz już gdzieś jakoś zdefiniowaną/opisaną (np. na kartce 
> papieru czy wewnątrz funkcji getBarFromFoo()). W czym więc problem, aby 
> jednorazowo przepisać („wygenerować”) tę funkcję do pliku .cpp 
> zawierającego np. coś w stylu:
> const Bar foo2bar[256] = { /* opcjonalnie „static const” */
>      Bar(7),
>      Bar(2),
>      (Bar)0, /* 0 -> wartość „niezdefiniowana */
>      Bar(1),
>      ...
> };

Widzisz, zakładasz, że potrafisz "zgadnąć" kolejnośc enumeratorów Foo. 
Ona nie jest stabilna. Jak ktoś doda/usunie enumerator Foo, to ta 
tablica tego automatycznie nie dostosuje. To generuje ciężkie do 
odnalezienia błędy.

Ja wiem, że Foo:X1 mapuje się na Bar(3,4). Ale Foo::X2 na Bar(15,2). 
Który element tablicy to Foo::X1 to wie tylko kompilator. Nigdzie nawet 
nie podaję wartości liczbowych dla tego enumeratora, wyliczają się "same".

Aby taka deklaracja jak powyżej działała, musiałbym pozbyć się Foo::X1 i 
pozostałych oraz liczyć na szczęscie, że prawidłowo uda mi się utrzymać 
niejawnie numery tablicy vs odpowienie Bar wpisując na pałę po kolei Bar.

Tymczasem ja wiem tylko, że Foo::X1->Bar(3,4) i chciałbym, aby to 
"Bar(3,4)" wylądowało automatycznie na właściwej pozycji tablicy bez 
względu na manipulacje przy enumeratorze Foo i jego wartości liczbowe w 
danym momencie.

> Taka tablica powinna wylądować w sekcji .rodata

Z tym nie ma problemu, tak zrobię, jak się nie trafi rozsądne wyjście na 
etapie kompilacji.
Technical Details
Message-ID: <usnbua$3n64i$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
References: <usk0pv$2tak9$1@dont-email.me> <uslhop$tf6$1$Jaworski@news.chmurka.net> <usn89d$3me9n$1@dont-email.me> <usnat5$dmp$1$jdx@news.chmurka.net>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: heby <heby@poczta.onet.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: stała mapa enum -> wartość
Date: Mon, 11 Mar 2024 17:36:24 +0100
Organization: A noiseless patient Spider
Lines: 39
Message-ID: <usnbua$3n64i$1@dont-email.me>
References: <usk0pv$2tak9$1@dont-email.me> <uslhop$tf6$1$Jaworski@news.chmurka.net> <usn89d$3me9n$1@dont-email.me> <usnat5$dmp$1$jdx@news.chmurka.net>
MIME-Version: 1.0
Injection-Date: Mon, 11 Mar 2024 16:36:26 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="0ec05aca81975a62ada54560a69fca72"; logging-data="3905682"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1824LZI0fj0Bc36Yqx6krfe"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:GMTdUKMGna/Ynq+ZsKHLdal3AWs=
In-Reply-To: <usnat5$dmp$1$jdx@news.chmurka.net>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit