Article View: pl.comp.lang.c
Article #310519Re: stała mapa enum -> wartość
From: heby
Date: Mon, 11 Mar 2024 16:36
Date: Mon, 11 Mar 2024 16:36
38 lines
2928 bytes
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-mailReferences:
<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