RE: C: kontrola vstupní hodnoty do procedury preprocesorem.

Miroslav Draxal evik na volny.cz
Úterý Červenec 10 14:39:55 CEST 2018


Do teď to dělám tak, že mám v dané funkci kontrolu vstupních hodnot udělanou
(xc8)

 

__conditional_software_breakpoint(!(A+10+B > 200));

 

Překládá to jenom v DEBUG. V Relase se to vypustí. Ale říkal jsem si, jestli
by to nešlo nějak pomocí preprocesoru, ale jak jsem psal, nic mě
nenapadalo.Takže možnost snaha realizovat první myšlenku.

Míra

 

From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Marek Hummel
Sent: Monday, July 09, 2018 9:50 PM
To: HW-news
Subject: RE: C: kontrola vstupní hodnoty do procedury preprocesorem.

 

Dobry den,

 

A je velky problém provest kontrolu na urovni kodu ve funkci, tak jak je to
obvykle. Co je důvodem zamysleneho reseni, uspora mista, rychlost nebo snaha
realizovat prvni myslenku jak dany problém vyresit J.

 

Marek

 

From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jaroslav
Buchta
Sent: Monday, July 9, 2018 9:29 PM
To: hw-list na list.hw.cz
Subject: Re: C: kontrola vstupní hodnoty do procedury preprocesorem.

 

Uz podruhe mne mate jak AA a BB prechazi na A a B - ale mozna jsem to jen
nepochopil...
Obecne to IMHO nejde, protoze jako argument muzete predt treba
UdelejNeco(*((uint32_t*)1234)); a preprocesor je v ...

Dne 09.07.2018 v 21:19 Miroslav Draxal napsal(a):

Rozvedu to:

#define AA 5

#define BB 10

 

#if A+10+B > 200

#             error "Cislo je moc velké"

#endif

UdelejNeco (A+10+B);

 

Sem míří moje otázka. UdelejNeco je procedura v knihovně. Volám jej
několikrát z main. To #if bych rád v knihovně ne v main, a aby to
vyhodnocoval preprocesor, ne program.

Snad je to popsáno správně.

 

From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jaroslav
Buchta
Sent: Monday, July 09, 2018 8:19 PM
To: hw-list na list.hw.cz
Subject: Re: C: kontrola vstupní hodnoty do procedury preprocesorem.

 

Nevim jak to myslite, preprocesor je IMHO mocny nastroj jazyka C, ktery z
nej prave dela idealni jazyk pro psani programu prenositelnych na ruzne
platformy a pritom na nizke urovni.
Jen se musi pouzivat k ucelu, ke kteremu byl zamyslen...

Nechapu presne, co tazatel chce, jestli vyhodnoceni argumentu pro funkci ve
fazi prekladu, tak bych sel cestou modifikace algoritmu, aby to nebylo
potreba. 

Dne 09.07.2018 v 19:22 Ondrej napsal(a):

Zdravím

 

nemohlo by pár const statických "proměnných" a inline funkcí a assert udělat
stejnou práci. A lépe. C preprocesor je zlo a jeho použití nedává u
modernách překladačů většinou moc smysl.

 

O.

 

Dne 9.7.2018 v 11:41 Miroslav Draxal napsal(a):

Zdravím vespolek,

Lze nějakým šikovným zápisem kontrolovat vstupní hodnotu procedury
preprocesorem? Nic mě nějak nenapadá.

 

#define AA 5

#define BB 10

UdelejNeco (A+10+B);

 

Zkontrolovat preprocesorem, aby hodnota řekněme nebyla větší než 200.

Díky za pomoc, Míra






_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list







_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list

 





_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list

 

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20180710/d742f787/attachment.html>


Další informace o konferenci Hw-list