学习C++语言总结之谈

hellojunz 2010-01-21

对第一次接触到C++语言的用户和学者来说,了解C++语言的概念是非常重要的,那么就先说一下什么是C++语言,所谓C++语言:是一种使用非常广泛的计算机编程语言,下面进行学习探讨。

作为一种欲与C兼容的语言,C++语言保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。

为什么标准头文件都有类似以下的结构?

#ifndef __INCvxWorksh  


#define __INCvxWorksh   


#ifdef __cplusplus  


extern "C" {  


#endif   


/*...*/   


#ifdef __cplusplus  


}  


#endif   


#endif /* __INCvxWorksh */ 

那么:

#ifdef __cplusplus  


extern "C" {  


 #endif   


 #ifdef __cplusplus  


}  


#endif   


而在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。

/* c语言头文件:cExample.h */  


#ifndef C_EXAMPLE_H  


#define C_EXAMPLE_H  


extern int add(int x,int y);  


#endif  


/* c语言实现文件:cExample.c */  


#include "cExample.h"  


int add( int x, int y )  


{  


 return x + y;  


}  


// c++实现文件,调用add:cppFile.cpp  


extern "C"   


{  


 #include "cExample.h"  


}  


int main(int argc, char* argv[])  


{  


 add(2,3);   


 return 0;  


} 

在C中引用C++语言中的函数和变量时,C++的头文件需添加extern "C",但是在C语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型。

相关推荐