一、C和C++混合开发
C++ 可以看作是 C 语言的增强版,在 C 的基础上扩展了更多的功能。一个 C 程序可以看作一个简单的 C++ 程序。但是 C++ 和 C 语言之间还是存在区别的。例如,C++ 支持函数名重载,而 C 不支持,因此编译器生成目标文件时,函数名在目标文件中的临时内部名称规则不同,导致链接时符号对不上。因此,我们可以使用 extern "C"{}
可以使 {} 中的内容用 C 的标准来编译。
新建一个 test.c 文件,用来存放编写的 C 源代码。
#include "test.h"
int add(int a, int b)
{
return a + b;
}
新建一个 test.h 文件,用来存放编写的 C 的头文件。
#pragma once
// C++的编译器会定义一个__cplusplus的宏
#ifdef __cplusplus
// 告诉编译器{}内的内容使用C语言编译器编译
extern "C"
{
#endif // __cplusplus
int add(int a, int b);
#ifdef __cplusplus
}
#endif // __cplusplus
新建一个 main.cpp 文件,用来存放编写的 C++ 的源文件。
#include <iostream>
#include "test.h"
using namespace std;
int main(void)
{
int count = add(10 ,20);
cout << "count = " << count << endl;
return 0;
}
标签:__,int,31,add,C++,混合,编译器,cplusplus From: https://blog.csdn.net/flurry_heart/article/details/143920962如果我们在 C++ 程序中直接调用 C 程序中编写的程序,会报如下错误:undefined reference to `add(int, int)'。