我想在一个结构里面使用枚举,这个编译和工作正常,与gcc
。 但与g++
编译时相同的代码会引发错误。枚举结构内 - C vs C++
#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);
}
输出海合会
-bash-4.1$ gcc foo.c
-bash-4.1$ ./a.out
mode=0
输出的G ++
-bash-4.1$ g++ foo.c
foo.c: In function ‘void bar(foo*)’:
foo.c:11: error: ‘MODE1’ was not declared in this scope
Hooray!有人明白C和C++是(非常)不同的语言! (当然我在说编译器:P) – Manu343726
确定它们是不同的,有很多不同之处。 – 4pie0
@ Manu343726:如果我将标题修改为'gcc vs g ++'而不是'c vs C++'',您会很开心吗?:) – arunmoezhi