Les énumérations au sein d'une structure (struct) - C vs C++

Je suis en train d'utiliser les Énumérations dans un struct, cette compile et fonctionne très bien avec gcc.
Mais le même code lors de la compilation avec g++ renvoie une erreur.

#include<stdio.h>
#include<stdlib.h>
struct foo
{
    enum {MODE1, MODE2, MODE3} mode;
    enum {TYPE1, TYPE2} type;
};
void bar(struct foo* bar)
{
    bar->mode = MODE1;
}

int main()
{
    struct foo* foo = (struct foo*) malloc(sizeof(struct foo));
    bar(foo);
    printf("mode=%d\n",foo->mode);
}

De sortie obtenue avec gcc:

 $ gcc foo.c
 $ ./a.out
 mode=0

De sortie obtenue avec g++:

 $ g++ foo.c
 foo.c: In function void bar(foo*)’:
 foo.c:11: error: MODE1 was not declared in this scope
Hourra! Quelqu'un qui comprend que le C et le C++ sont (très) différentes langues! (Bien sûr je parle du compilateur :P)
assurez-vous qu'ils sont différents, il existe de nombreuses différences.
Seriez-vous heureux si j'ai modifié le titre de gcc vs g++ au lieu de c vs c++ 🙂
Votre titre est très bien. Ce qui se passe, c'est que souvent les gens pensent qu'il existe une langue appelée C/C++, avec une série de règles 🙂

OriginalL'auteur arunmoezhi | 2014-05-04