Bun venit pe SkullBox!

Bine ai venit, Vizitator. Trebuie să te autentifici sau să îţi creezi un cont.
Ai pierdut sau nu ai primit emailul care conţine codul de activare al contului?

Autentifică-te cu numele de utilizator, parola şi precizează durata sesiunii.
  Pagini: [1]
  Imprimă  
Incompatibilitati intre C si C++  (Vizualizari 351)
astan
*

Deconectat Deconectat

Mesaje: 357

Incompatibilitati intre C si C++, Mar 30, 2008, 00:56

Exista printre anumiti programatori C++ mitul ca orice program C valid este valid si in C++, in sensul ca limbajul C++ este 100% compatibil cu limbajul C. Bineinteles, acest lucru este fals (de exemplu C++-ul nu include feater-urile adaugate in standardul C99)
La link-ul urmator sunt date exemple de cod valide in C, dar invalide in C++. Foarte util pentru cine scrie cod C si vrea sa fie capabil sa compileze respectivul cod si cu un compilator C++.

http://david.tribble.com/text/cdiffs.htm
Memorat
3Nigma
*

Deconectat Deconectat

Mesaje: 981

WWW
Incompatibilitati intre C si C++, Mar 31, 2008, 17:40

un mic comentariu c99 a fost un consortium la care s-a imbunatatit limbajul c++ [c a fost inglobat de c++ cu multi ani inainte] deci cum poti afirma ca c++ nu e compatibil cu c++? nu inteleg eu bine?
Memorat



Search for knowledge in the darkest places and in the blackest hours! You might get lucky and find more than you are looking for...

"Ambition is a lame excuse for the ones that are not brave enough to be lazy..."
astan
*

Deconectat Deconectat

Mesaje: 357

Incompatibilitati intre C si C++, Mar 31, 2008, 20:14

Nu intelegi bine. Nu am spus ca C++ nu e compatibil cu C++, ar fi un nonsens.
Ultimul standard de C++ a fost in 1998. In limbajul C, ultimile adaugiri s-au facut in 1999 (in standardul ISO C99) si multe nu au corespondent in standardul C++
C99 nu a fost nici un consortiu in care s-a imbunatatit limbajul C++, ci limbajul C. Limbajele C si C++ sunt standardizate separat.
Am spus ca C99 nu e compatibil cu C++.

Exemplu de feater-uri care exista in C99 si nu exista in standardul C++:
- variadic macros
- array-uri de lungime variabila
- tipuri de date pentru numere complexe
- calificatorul restrict
etc

Daca folosesti astfel de feature-uri in C++, ele nu sunt standardizate si de aceea nici nu sunt portabile intre diverse compilatoare de C++. Unele compilatoare de C++ suporta toate cele enuntate, altele doar o parte, iar altele nici unul. Dar noi vorbim acum de C++ standardizat, nu de extensii specifice diverselor compilatoare.
Evident, urmatoarul standard de C++ va ingloba, printre altele, si adaugirile la standardul C99.

C99 nu a fost un consortium la care s-a imbunatatit limbajul C++, ci limbajul C. Cele 2 limbaje fiind standardizate diferit.

Iti recomand sa citesti documentul de la link-ul pe care l-am trimis. Explica foarte clar ca ISO C99 este ultimul standard al limbajului C. El explica incompatibilitatile intre C99 si C++98.
Exista si incompatibilitati intre precedentul standard de C (C90) si C++98 ! Ele sunt documentate in "The C++ programming language"

C-ul nu a fost 100% integrat in C++. C++-ul este in general compatibil cu C-ul, dar nu in absolut toate cazurile.
Exista si cazuri de cod valid C90 care nu este valid in C++. In general, anumite constructii ale limbajului C care au fost considerante nesigure sau inutile de catre comitetul de standardizare C++ nu au fost introduse in limbajul C++.

Nu spun ca C++-ul este incompatibil cu C90, spun ca nu este 100% compatibil. In mod evident, multe din lucrurile adaugate in C99 nu sunt compatibile cu ultimul standard C++ (dar probabil vor fi cu urmatorul)


Uite un exemplu de cod C90 valid dar care nu este valid in C++ (cred ca e unul din cele mai des intalnite situatii):

int *p = malloc(10 * sizeof(int));

In C++ nu este permisa conversia implicita de la void* la int* si rezultatul va fi o eroare la compilare.
In C codul este perfect valid.

Nu ai intalnit niciodata situatia data ca exemplu ?
Memorat
SkullAds
Ecspert
ReclAmator
* * * * *
Google AdSense

Gen: Bărbat
Mesaje: Multe

Reclama AdSense,
 

 
   


Pagini: [1]
  Imprimă  
 
Schimbă forumul:  

Ethical hacking and programming community
Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Traducerea în limba română © 2006-2007 www.smf.ro