113 votes

« C sous-ensemble de C++ »-> où non ? exemples ?

J’ai lu beaucoup de livres la revendication que «que c est un sous-ensemble de C++».
En fait certains disent de (bons ?) livres : « C est un sous-ensemble de C++ sauf les petits détails».

Je m’intéresse à ce que ces détails sont. Je n’ai jamais vu un.

134voto

Johannes Schaub - litb Points 256113

Si vous comparez C89 avec C++ , alors voici un couple de choses

Aucune tentative de définitions en C++

int n;
int n; // ill-formed: n already defined

int[] et int[N] n'est pas compatible (pas compatible avec les types en C++)

int a[1];
int (*ap)[] = &a; // ill-formed: a does not have type int[]

Pas de K&R, la fonction de définition de style

int b(a) int a; { } // ill-formed: grammar error

Imbriquée struct a portée de la classe en C++

struct A { struct B { int a; } b; int c; };
struct B b; // ill-formed: b has incomplete type (*not* A::B)

Pas de valeur par défaut int

auto a; // ill-formed: type-specifier missing


C99 ajoute tout un tas d'autres cas

Pas de traitement particulier de la déclaration des prescripteurs dans les dimensions du tableau de paramètres

// ill-formed: invalid syntax
void f(int p[static 100]) { }

Aucune variable de tableaux de longueur

// ill-formed: n is not a constant expression
int n = 1;
int an[n];

Pas de flexibilité membre du groupe

// ill-formed: fam has incomplete type
struct A { int a; int fam[]; };

Pas de restreindre qualificatif pour aider aliasing analyse

// ill-formed: two names for one parameter?
void copy(int *restrict src, int *restrict dst);

49voto

Naveen Points 37095

C, est égale à .

En C++, est égale à .

37voto

Graeme Perrow Points 22249

C++ a des nouveaux mots clés aussi bien. Le texte suivant est le code valide de C mais ne compile sous C++ :

20voto

Mehrdad Afshari Points 204872

Il y a beaucoup de choses. Juste un exemple simple (il devrait suffire à prouver C n’est pas un sous-ensemble propre de C++) :

doit compiler en C, mais pas en C++.

16voto

Robert Gamble Points 41984

Wikipedia a un bon résumé des différences : compatibilité de C et C++

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X