C a peklo updatov

Jan Waclawek konfera na efton.sk
Pondělí Říjen 9 18:19:53 CEST 2023


Pred asi 8 rokmi som v jednom projekte pouzil kus C kodu ktory napisal
ktosi iny, znalejsi nez ja; bola tam pouzita funkcia strcasestr(). To je z
tych funkcii, ktore nie su v standarde, ale bezne su k prekladacom
pribalene, pretoze su velmi uzitocne. Konkretne strcasestr() ma tu istu
funkciu ako strstr() (t.j. hlada vyskyt pod-retazca v inom retazci, cize
je to uzitocne pre parsery) a byva prototypovany v <string.h>.

Teraz som z toho stareho projektu vykopiroval kus, pokusam sa prelozit, a
prekladac krici, ze nevie, co je strcasestr(). Hm.

Guglenie prezradilo
https://stackoverflow.com/questions/9935642/how-do-i-use-strcasestr , ze
treba pouzit _GNU_SOURCE - fajn, pouzil som podla navodu, prelozil,
funguje.

Ale pozeram do toho stareho projektu, a tam ziadny _GNU_SOURCE  nie je, a
pritom sa da bez problemov prelozit.

Najdi tri rozdiely.

No, rozdiel je v prekladaci - na novsi projekt som pouzil novsi
gcc/binutils/newlib. A vysvitlo, ze strcasestr() je "skryte" tym
_GNU_SOURCE az od roku 2014, pricom starsi projekt som prekladal starsim
prekladacom, z roku 2013...

Takze updaty aj ineho nez Thunderbirdu vedia otravit cloveku den...

wek



Další informace o konferenci Hw-list