[so] [Tema1][Windows] Standard C89

Razvan Crainea razvan.crainea at gmail.com
Thu Mar 5 00:26:24 EET 2020


Salut, David!

Standardele C99 și C11 vin cu o serie de îmbunătățiri ale calității
codului, doar că acestea sunt în detrimentul portabilității.
Dacă vrei să scrii o aplicație de uz general, care să poată fi
folosita de oricine, atunci vrei ca ea să fie cât mai portabilă, să
poată fi compilată pe cât mai multe platforme, ideal pe toate. Atunci
ai de făcut un compromis: A) fie scrii cod conform standardelor celor
mai răspândite, în cazul de față un standard adoptat de peste 20 de
ani (C89), B) fie limitezi persoanele care folosesc niște
sisteme/compilatoare mai vechi să folosească aplicația ta. Costul
variantei A) este declararea unor variabile câteva linii mai sus, sau
folosirea lui alloca() vs variable-length arrays (C99), comparativ cu
B) imposibilitatea de a rula aplicația ta pe anumite sisteme. Dacă
scopul tău este ca aplicația să fie cât mai larg folosită, atunci
consider că A) este varianta preferată. Dacă scopul tau este să
termini cât mai repede implementarea, să poți rula aplicația, dar ea
să fie folosită doar de tine, atunci poți alege B).
În cadrul cursului de SO încurajăm dezvoltarea cât mai generică și
portabilă a aplicațiilor, de aceea încurajăm dezvoltarea folosind
standardul C89.

Am notat feedback-ul legat de faptul că nu este specificat explicit în
temă că trebuie să folosiți standardul c89, mulțumim pentru
atenționare! Dacă într-adevăr este o problemă atât de mare pentru
tine, te rog să punctezi acest lucru în forumularul de feedback pe
care o să-l primiți la final de semestru.

Spor la temă,
Răzvan

On Wed, Mar 4, 2020 at 11:29 PM David Gherghita via so
<so at cursuri.cs.pub.ro> wrote:
>
> Multumesc pentru raspuns, o sa o transform in C89. Mi s-ar fi parut normal, totusi, ca acest aspect sa fie precizat in cerinta (am vazut ca este in FAQ o intrebare referitoare la asta dar nu mi se pare suficient).
>
> Din cate am vazut nici versiunile mai noi de Visual Studio nu ofera suport pentru c99 sau c11, pentru ca cl e focusat pe c++, si nu mi se pare ok sa fie nevoie sa folosim un standard atat de vechi, avand in vedere ca versiunile noi au adus multe imbunatatiri.
>
> On Wed, Mar 4, 2020 at 11:14 PM Paul Olaru <olarupaulstelian97 at gmail.com> wrote:
>>
>> Din păcate trebuie făcută în C89 tema asta (și eu m-am confruntat cu asta anul trecut).
>>
>>
>>
>> (de ar fi mai actualizate mașinile virtuale să nu mai fie Visual Studio 2010 ci 2017 care
>>
>> are un compilator mai modern...)
>>
>>
>>
>> Eu personal recomand să pui -std=c89 pe compilerul gcc pe Linux pt că acesta dă erori
>>
>> mai clare decât cel de Windows când, spre ex, ai declarații amestecate cu restul codului.
>>
>>
>>
>> Sent from Mail for Windows 10
>>
>>
>>
>> From: David Gherghita via so
>> Sent: Wednesday, March 4, 2020 11:11 PM
>> To: so at cursuri.cs.pub.ro
>> Subject: [so] [Tema1][Windows] Standard C89
>>
>>
>>
>> Salutare,
>>
>>
>>
>> In urma obtinerii cu succes a punctajului maxim pe linux, compiland codul cu standardul C11, la testarea pe windows am observat extrem de mult erori de compilare, datorate folosirii de cl a standardului C89.
>>
>>
>>
>> Cautand pe net cum pot seta folosirea unui standard mai nou, am inteles ca nu se poate. Sper totusi ca acest lucru sa nu fie adevarat, deoarece nu inteleg de ce s-ar alege pt SO pe windows acest compilator de la microsoft care nu suporta versiuni mai noi de C, avand in vedere multitudinea de alternative disponibile.
>>
>>
>>
>> Multumesc,
>>
>> Gherghita David
>>
>>
>
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii



--
Răzvan Crainea


More information about the so mailing list