Portál AbcLinuxu, 1. května 2025 11:24

Lepšie nedefinovať takto štruktúry v C.

4.8.2020 21:46 | C

#include <stdio.h>

static struct {
	int day;
	int month;
	int year;
} date = {
	4, 8, 2020
};

int main(){
	printf("year: %d\n", date.year);
	return 0;
}
       

Hodnocení: 11 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

4.8.2020 22:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
Odpovědět | Sbalit | Link | Blokovat | Admin

Asi by měla následovat anketa, co tím autor vlastně myslel. :-)

5.8.2020 00:21 samalama
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
ci problem nebude prave v tom, ze autor nemysli...
5.8.2020 01:15 Žufánek
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
nepoužívat signed proměnné pro hodnoty, které jsou z definice unsigned
Tak tady to fakt hrozně vadí, přetečení iminentní.
5.8.2020 08:02 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
Ono nemusí být iminentní. Schválně si zkuste bez hledání po webu nebo nahlédnutí do specifikace odpovědět, jak přesně se chová "X < Y" nebo "A ? X : Y", je-li X signed a Y unsigned nebo naopak, případně je-li to ještě zpestřeno různou velikostí těch proměnných. Podobně bohorovný přístup často končí bezpečnostními chybami.
5.8.2020 23:47 xxx
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
No nevim. Spis jsou to takova tri stadia.

Programator:

1. pouziva vsude int

2. mixuje signed/unsigned int ruznych velikosti

3. po mnoha chybach zpusobenych s/u int ruznych velikosti a nastudovani, jak to funguej, opet pouziva pouze int

6.8.2020 07:39 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
Do fáze 3 se ale naštěstí nedostanou všichni.
5.8.2020 09:13 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
nekombinovat deklaraci struktury jako typu s deklarací proměnné toho typu
👍
debian.plus@protonmail.com
Gréta avatar 5.8.2020 12:57 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
Odpovědět | Sbalit | Link | Blokovat | Admin

všecko co se jako zkompiluje je správně :D :D ;D ;D

Zelená energetická soustava založená na obnovitelnejch zdrojích energie versus realnej svět 🤡🇪🇸
Heron avatar 5.8.2020 20:02 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
Odpovědět | Sbalit | Link | Blokovat | Admin
Mě nejvíc dráždí to, že jsou to inty a že je to inicializované přímo. Datum nejsou tři inty. Datum je složitější datová struktura a ne všechny hodnoty těchto tří polí tvoří validní datum. Ve skutečnosti drtivá většina hodnot není validní datum.
Heron
5.8.2020 21:52 Martin Tůma | skóre: 39 | blog: RTFM | Praha
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.

A jak by sis jako v C představoval datovou strukturu, která by sama o sobě řešila validitu dat? Jako jednoduchá datová reprezentace datumu je to naprosto ok, pro "bezpečnou" práci s tou strukturou pak můžeš mít nadefinované funkce, které dělají potřebné kontroly.

Co se týče té "přímé inicializace", tak tohle se v C zcela běžně záměrně používá, pokuď se definovaná struktura (běžně se spíš jedná o pole struktur) použije v daném modulu přesně 1x.

Každý má právo na můj názor!
5.8.2020 22:18 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
"Zcela běžně se používá" spousta věcí, které bych za hodné následování neoznačil ani omylem.
5.8.2020 23:34 Martin Tůma | skóre: 39 | blog: RTFM | Praha
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
Měl jsem na mysli "běžně používá v nějaké situaci". Přirovnal bych to k použití GOTO. To taky obecně není úplně doporučovaný pattern, ale jako error handling je to zcela běžná (a preferovaná) technika. Samozřejmě, někdo to může vidět jinak, ostatně stejně jako u toho GOTO...
Každý má právo na můj názor!
5.8.2020 22:47 Odin1918 | skóre: 6 | blog: Valhalla
Rozbalit Rozbalit vše Re: Lepšie nedefinovať takto štruktúry v C.
Odpovědět | Sbalit | Link | Blokovat | Admin
Nejlepsi by bylo vykaslat se na 50 let stary jazyk a pouzit treba neco objektoveho mladsi 30ti let. :-D

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.