$ git diff 3ecb172c17f94d21f692915703c4310a2bd23807..d37ca32e80e6933fc18d9fc07f3fd4daf0fa79c6 dbdcnx.c
-PERL_STATIC_INLINE void
-llist_drop(llist_t * el)
-{
- if(llist_empty(el)) return;
- el->left->right = el->right;
- el->right->left = el->left;
- llist_init(el);
-}
+#define llist_drop(ael) do{\
+ llist_t * el = ael;\
+ if(llist_empty(el)) return;\
+ el->left->right = el->right;\
+ el->right->left = el->left;\
+ llist_init(el);\
+}while(0)
Hint: azt tessék figyelni, milyen ügyesen alakította át a return utasítást, amikor inline függvényből makrót csinált (hint: nem alakított át semmit).
Emlékeztető:
https://github.com/perl5-dbi/DBD-Oracle/commit/3ecb172c17f94d21f6929157…
https://github.com/perl5-dbi/DBD-Oracle/issues/174
https://github.com/perl5-dbi/DBD-Oracle/pull/177
- NevemTeve blogja
- A hozzászóláshoz be kell jelentkezni
- 587 megtekintés
Hozzászólások
De, miért? Mire gondolt a költő?
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "
- A hozzászóláshoz be kell jelentkezni
"Some old systems can not use inline function"
- A hozzászóláshoz be kell jelentkezni
Az meg nem tűnt fel neki, hogy a PERL_STATIC_INLINE
című define pont az ilyen esetek kezelésére való: ha a TurboC nem ismeri az inline-t, akkor #define PERL_STATIC_INLINE static
- A hozzászóláshoz be kell jelentkezni
Így nem is fordul szegény program, mivel a return
-t változatlanul benne hagyta az inline-függvényből makróvá alakított kódban, vagyis a return a hívó függvényből tér ki, visszatérési érték nélkül: mivel nem csak 'void-értékű' függvényekből hívják a makrót, hibát kapunk. (Szerencsére, mert így kiderült, hogy nem jó.)
https://github.com/perl5-dbi/DBD-Oracle/pull/177
- A hozzászóláshoz be kell jelentkezni
https://chatgpt.com/share/5a965718-98d5-4f38-b59d-f872c644d195
Valoszinuleg chatgpt volt a ludas, ugyanezt elkovette (bar a temperature miatt nem feltetlenul kellene). Ha kijavittatom a kodot, azt is ki tudja. Ezert kell atnezni minden ilyen kodot.
Ha elore jol leirom neki, hogy mire figyeljen, feltehetoen elsore jol irja meg (vagy ha feljebb valtok 3.5-rol).
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
2022 augusztusi commit. Akkor a ChatGPT még nem volt publikus.
- A hozzászóláshoz be kell jelentkezni
Akkor lehet, hogy epp ebbol tanulta.
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
Akkor ez a természetes butaság
Ha tartós rendszert építesz és okos csapatot nevelsz, akkor száz kiadásban sem érheti baj; ha csak a gépekre hagyatkozol, akkor egyszer jól jársz, máskor rosszul; de ha sem a rendszer nem bírja a terhet, sem a csapat nem tanul a hibákból, akkor minden egyes kiadás kockázat.
- A hozzászóláshoz be kell jelentkezni