参考资料来源:https://bbs.csdn.net/topics/391845239
近期练习pta以及以前对C++的简要了解,让我有了一些想说的东西。
新手学习C语言或是C++,很多都会选择Dev-c开始。但是倘若想要区分开C和C++,就要注意保存的问题。Dev-c保存时,默认为.cpp,这是C++文件的后缀。不过由于C++包含着C,所以在.cpp中既可以写C++,也可以写C(就是可兼容)。但最终还是被编译器视为C++程序。
如果想要写纯C语言代码,就要在保存时将文件后缀改为.c
当然,一般我都是编译时弹出保存窗口,直接保存为cpp,毕竟还要修改,就很麻烦。
不过,在学习C语言时,遇到一些代码错误,或是与自己的认知有了冲突,就要考虑这方面的影响。
下面举两个例子。
1.听说"随用随定义"是C++的特性,是C语言没有的,为什么我写C程序也成功了呢?
如下:
实际上,细心的人就会发现,我上面文件是.cpp的。
那我改为.c会怎样呢?
结果就是,出错了。
结论就是:
看似你写的是C语言的代码,#include<stdio.h>等等。但只要保存为.cpp,编译器就认为它是C++文件,里面写任何C++的代码都ok。
而倘若你把他改成真正的C程序.c ,你就只能写C语言,C++的代码碰都不要碰,反正也会报错。
2.最近pta上的函数题
起初,我就是因为习惯.cpp而出了问题,给我报各种错。查了一下才明白,由于我是.cpp,而C++新增的类型就是bool类型,已经有true 和 false 的定义了。所以这里的裁判程序样例里的 typedef 和 enum 是完全没必要的,还会出问题。那怎么办?改成 .c 就行了。(.c没有那些东西,所以才要 typedef)