编译器如何判断你使用的是c语言还是c++
今天突然想到的一个问题,比如我写一个简单的程序:
struct Stduent
{
int schoolNumber;
int examResult_Math;
int examResult_English;
//int getTotalScore();
};
int main()
{
struct Stduent xiaoming;
xiaoming.schoolNumber;
return 0;
}
我们知道,c++的类也是可以用struct关键字定义的,所以这个程序会比较矛盾。如果编译器认为我写的是c语言程序,将Student判定为结构体,那么注释掉的函数将会被认为是错误的代码;而如果编译器判定我写的是c++程序,那么这个函数自然没有问题。
在我的编译器vs2010下,编译器不会对这个函数的声明报错,所以应该判断为c++程序。
有人想过这是为什么吗?
虽然这个问题很无聊。。。