[so] Warning-uri si alte probleme

cosminratiu at gmail.com cosminratiu at gmail.com
Sun Nov 25 01:54:01 EET 2007


Salut. O sa iti raspund la prima parte a mailului, la a 2-a Iulian e cel mai
calificat sa iti raspunda.

In primul rand, take a deep breath...din ceea ce ai scris razbate multa
nervozitate. Nu putem purta o discutie bazata pe argumente logice daca nu
esti 100% rational (nu, nu incerc sa fiu sarcastic).
Acuma, legat de warningurile alea despre strcat. Ce spun ele de fapt este ca
functia strcat in sine este unsafe si ca ar fi bine sa folosesti alta, care
e safe. Mai exista inca una despre care nu se pomeneste acolo, si anume
strncat, care este si ea safe si in plus e POSIX. Sper ca intelegi motivele
pt. care strcat este considerata unsafe. Chiar daca in codul tau nu exista
posibilitatea sa depasesti bufferul destinatie, este ceea ce se cheama GPP
a.k.a. Good Programming Practice. Uneori, compilatoarele ne forteaza sa
facem anumite lucruri pt. binele nostru, chiar daca Noi, Programatorii, ne
credem niste Zei care Nu Pot Gresi.

Cat despre afirmatia conform careia strcat ai invatat in facultatea asta
deci strcat o sa folosesti, mi se pare complet aiurea. Daca pornesti de la
premisa asta, nu ai nici o sansa in programare ca domeniu.

In al treilea rand, chestia cu warning-urile exista ca sa va determine sa va
ganditi la toate aspectele codului vostru, inclusiv cele mai tricky. A
functionat bine mersi de un an si ceva, nu vad de ce am scoate-o acum. In
plus, este destul de usor sa corectezi erorile alea.

Cu respect,
Cosmin.

On Nov 25, 2007 1:29 AM, Dan Badea <dan.badea at microsoft-lab.pub.ro> wrote:

>  Targeting Windows Server 2003 32bit DEBUG
>
>
>
>         cl client.cpp
>
>
>
> Microsoft (R) Program Maintenance Utility   Version 7.00.8882
>
> Copyright (C) Microsoft Corp 1988-2000. All rights reserved.
>
>
>
> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for
> 80x86
>
> Copyright (C) Microsoft Corporation.  All rights reserved.
>
>
>
> client.cpp
>
> client.cpp(250) : warning C4996: 'strcat' was declared deprecated
>
>         C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\string.h(78)
> : see declaration of 'strcat'
>
>         Message: 'This function or variable may be unsafe. Consider using
> strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See
> online help for details.'
>
> client.cpp(251) : warning C4996: 'strcat' was declared deprecated
>
>         C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\string.h(78)
> : see declaration of 'strcat'
>
>         Message: 'This function or variable may be unsafe. Consider using
> strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See
> online help for details.'
>
> client.cpp(258) : warning C4996: 'strcat' was declared deprecated
>
>         C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\string.h(78)
> : see declaration of 'strcat'
>
>         Message: 'This function or variable may be unsafe. Consider using
> strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See
> online help for details.'
>
> client.cpp(259) : warning C4996: 'strcat' was declared deprecated
>
>         C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\string.h(78)
> : see declaration of 'strcat'
>
>         Message: 'This function or variable may be unsafe. Consider using
> strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See
> online help for details.'
>
> Microsoft (R) Incremental Linker Version 8.00.50727.42
>
> Copyright (C) Microsoft Corporation.  All rights reserved.
>
>
>
>
>
> Buna ziua,
>
>
>
> As vrea sa stiu si eu cum de sunt depunctat 1 punct la tema 2 varianta
> Windows pentru aceste warning-uri si daca vi se pare normal.
>
>
>
> Nu stiu despre altii, dar eu nu am invatat in facultatea asta despre alte
> functii de concatenare decat strcat asa ca nu am de gand sa folosesc altele
> pentru teme. Iar despre warning-uri daca acesta functie este intr-adevar
> deprecated sugerz calduros sa se puna acelasi label si pe anumite materii pe
> care le avem in curriculum. Nu mi se pare normal sa suprim warning-uri doar
> de dragul de a satisface niste conditii la tema despre care sincer nici nu
> stiam ca exista, mai ales ca aceste warning-uri nu indica nici o problema
> reala in cod. Asa pot sa ma apuc si sa suprim toate warning-urile si gata.
> Vi se pare normal? Sau sa suprim ce ma deranjeaza pe mine la respective
> implementare. Asa se procedeaza? Exista warning-uri care intr-adevar indica
> o problema si warning-uri stupide ca acestea. Nu e prea elegant sa lasi un
> program sa depuncteze automat la numar de warning-uri. Nu va suparati, dar e
> vorba despre acelasi warning care apare de 4 ori si nu de 4 warning-uri. Mi
> se pare  super tare ca sunt depunctat la numarul de utilizari ale unei
> functii (pe care am fost invatat in ACEASTA facultate sa o folosesc). Daca o
> foloseam doar de 3 ori eram depunctat mai putin? Ca sa nu mai spun ca acest
> warning este cat se poate de compiler dependent.
>
>
>
> In concluzie, am rugamintea de a primi inapoi punctul care a fost scazut
> absolut gratuit si inutil.
>
>
>
> In alta ordine de idei as mai vrea sa semnalez o problema de-a dreptul
> interesanta. Poate face eu ceva gresit si nu inteleg bine cum stau lucrurile
> si atunci ar fi bine sa primesc o lamurire. Pentru ca daca nu ma insel si
> lucrurile stau asa cum cred eu nu e tocmai bine.
>
>
>
> Este vorba despre "testele" de la Tema 2. Problema apare tot la varianta
> pe Windows unde pentru verificarea prezentei unui mesaj in mailslot nu
> exitsa o functie blocanta care sa realizeze acest lucru. In consecinta
> pentru a nu face bussy waiting, in momentul in care vezi ca nu sunt mesaje
> nu verifici imediat inca o data sa vezi daca exista mesaje, ci, faci un mic
> sleep (eu cel putin asa fac – nu cred sa existe o alta solutie). Problema
> foarte interesanta este legata de valoarea pe care o trimiti functiei sleep.
> Eu de exemplu am folosit un sleep de 100 de milisecunde. Daca insa in loc de
> 100 fac bussy waiting (deci practic sleep de 0) anumite teste imi pica
> (5,6). Daca fac sleep de 150 de milisecunde, iar incep sa imi pice teste
> (6).
>
>
>
> Dupa parerea mea problema este numai si numai legata de modul de testare
> care se bazeaza pe verificarea unor print-uri la anumite momente de timp. In
> functie de sleep-ul pe care il fac intre doua momente la care am un mesaj de
> procest, este posibil, ca sa se execute mai putine sau mai multe operatii
> decat se astepta "checker-ul". Aceasta metoda de testare mi se pare
> defectoasa in acest scenariu in care pot exista mai multi clienti care nu
> stiu unul de altul si de ordinea in care comenziule au ajuns la server
> (poate au fost intercalate cu altele de la alt client) si de ordinea si
> momentul de timp in care serverul a executat respectivele comenzi.
>
>
>
> Astept o lamurire in legatura cu aceasta problema. Poate nu fac eu cum
> trebuie la implementarea pe Windows si trebuie sa fac altfel, nu cu Sleep de
> o anumita perioada.
>
>
>
> Cu bine,
>
> Dan Badea
>
>
>
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/so/attachments/20071125/909bed20/attachment.htm


More information about the so mailing list