背景:有时候一个工程中有c语言编写的代码(.c),也有c++(.cpp)编写的,分别用c语言编译器(这里指gcc)和c++编译器(g++)编译.c语言调用c++中的函数.
注:这种情形多出现在以下情况,一个较成熟的大型开源c语言工程,需要在其中添加一些c++特性的函数(仅验证了下边的例子)或者库(对于库还未验证).
举例说明:添上红色部分代码就可以了(必须都加上).主要是要使用extern "C"与__cplusplus,注意.cpp里面一定要引用头文件hell.h.
hello.h
#ifndef _H_HELLO_H
#define _H_HELLO_H
#ifdef __cplusplus
extern "C" {
#endif
void print_hello(void);
#ifdef __cplusplus
}
#endif
#endif
hello.cpp
#include <iostream>
using namespace std;
#include "hello.h"
void print_hello(void)
{
cout << "Hello world." << endl;
}