C++接口函数(c中调用c++函数extern)

一、在C++的头文件中:需要包含:

#ifdef __cplusplus
extern "C" {
#endif

const char *dmNmsAgentGetFirstPeerId();
const char *dmNmsAgentGetNextPeerId();

#ifdef __cplusplus
}
#endif
在C++的cpp文件中需要包含该函数的实现:

const char *dmNmsAgentGetFirstPeerId() {
   return Agent::getFirstPeerId();
}

const char *dmNmsAgentGetNextPeerId() {
   return Agent::getNextPeerId();
}

二、在C的.c文件中对该函数进行调用

1、加上包含c++函数的头文件

加上头文件,但c编译器可能对c++中的namespace或者头文件等不识别,会出错!所以要将需要c++编译的相关东西放在

#ifdef __cplusplus  和   #endif中间以提醒c++编译器的调用。

2、对c++中的函数进行原型声明。

const char *dmNmsAgentGetFirstPeerId()
 
  
const char *dmNmsAgentGetNextPeerId() 
 
  
三、c++类中声明的静态变量,在使用之前必须先定义,即在使用之前初始化。
eg:变量:
	static size_t peerIdCount_;
    初始化:在类外(也要是在函数外)
 
  
	size_t Agent::peerIdCount_=0;
方可使用。
 
  
四、关于strcpy函数
    strcpy拷贝时,切记拷贝的值不能为空,否则会出现段错误(因为空不是字符串)。
    在接收char * 类型的返回值时,不要直接strcpy,应该用指针接收。
    char * str =fun()
    然后再判断str的值是否为空。
 
  
    
 
  
 
  

你可能感兴趣的:(c++)