首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

编译器怎么判断你使用的是c语言还是c++

2012-07-01 
编译器如何判断你使用的是c语言还是c++今天突然想到的一个问题,比如我写一个简单的程序:struct Stduent{in

编译器如何判断你使用的是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++程序。
有人想过这是为什么吗?
虽然这个问题很无聊。。。

[解决办法]
vc系列一般是根据扩展名的,.c就是c,.cpp.cxx就是c++
[解决办法]
默认靠扩展名,当然也可以在编译选项里指定
[解决办法]
.c是C程序源文件扩展名。
.C(大写字母C)、.cpp、.cxx、.c++是C++程序源文件的扩展名。

但是,在Windows系统上是不区分文件名大小写的。所以在Windows上,一般.c是C程序,.cpp是C++程序。
[解决办法]
用__cplusplus可以判别你的编译器是否使用C++来解析的,

C/C++ code
#ifdef __cplusplus...#endif
[解决办法]
这个是看文件扩展名的吧
[解决办法]
依据:文件扩展名,宏定义(__cplusplus)

热点排行