关于预处理器
编译标准C++程序的时候编译器自动产生__cplusplus(前面是两个下画线),以用来区别C++程序,而标准C编译器是产生__STDC__,当然他们不会同时被定义。而C++又需要调用C的函数时候(它们很大程度兼容),可以通过如下方式
#ifdef __cplusplus
//我们现在是编译c++
extern "c" //表示引进C函数
#endif
{
//c函数声明
}
另外还有部分比较有意义的预定义名字:
__LINE__,__FILE__,__TIME__,__DATA__,具体表示什么可以通过程序测试,不详述。
标准C++能引用C的库文件,不过在名字上有点区别,在原来的C头文件前加个字母c,后面的文件后缀.h去掉(因为不同平台文件后缀方式不同,有些没后缀,所以C++干脆取消.h后缀),比如C的头文件<assert.h>转化成<cassert>,不过还有点区别。在c++中为了防止名字污染,一般库的实现者都使用名字空间限定,象标准C++库使用std,所以要加上此句,
using namespace std;
编译标准C++程序的时候编译器自动产生__cplusplus(前面是两个下画线),以用来区别C++程序,而标准C编译器是产生__STDC__,当然他们不会同时被定义。而C++又需要调用C的函数时候(它们很大程度兼容),可以通过如下方式
#ifdef __cplusplus
//我们现在是编译c++
extern "c" //表示引进C函数
#endif
{
//c函数声明
}
另外还有部分比较有意义的预定义名字:
__LINE__,__FILE__,__TIME__,__DATA__,具体表示什么可以通过程序测试,不详述。
标准C++能引用C的库文件,不过在名字上有点区别,在原来的C头文件前加个字母c,后面的文件后缀.h去掉(因为不同平台文件后缀方式不同,有些没后缀,所以C++干脆取消.h后缀),比如C的头文件<assert.h>转化成<cassert>,不过还有点区别。在c++中为了防止名字污染,一般库的实现者都使用名字空间限定,象标准C++库使用std,所以要加上此句,
using namespace std;