【发布时间】:2014-06-21 03:42:54
【问题描述】:
我正在尝试在结构中使用枚举,它可以编译并与gcc 一起正常工作。
但是同样的代码用g++编译时会报错。
#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);
}
使用gcc获得的输出:
$ gcc foo.c
$ ./a.out
mode=0
使用g++获得的输出:
$ g++ foo.c
foo.c: In function ‘void bar(foo*)’:
foo.c:11: error: ‘MODE1’ was not declared in this scope
【问题讨论】:
-
万岁!了解 C 和 C++ 是(非常)不同的语言的人! (当然我说的是编译器:P)
-
确定他们是不同的,有很多不同。
-
@Manu343726:如果我把标题改成
gcc vs g++而不是c vs c++,你会高兴吗:) -
你的标题没问题。发生的事情是,人们常常认为有一种语言叫做 C/C++,有一套规则:)