如何编写代码在C语言中实现C函数调用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计895个文字,预计阅读时间需要4分钟。
在C++开发中使用`extern C`的原因是C和C++的编译规则不同。为了确保C++代码中可以正确调用C语言编写的函数,需要使用这种声明。
例如,如果存在以下两个函数:cppvoid func(int age) {}void func(int age, int height) {}需要确保它们可以被正确调用,可以这样声明:cppextern C void func(int age);extern C void func(int age, int height);
为什么要是用 extern "C"
在进行C++开发的时候,由于C、C++编译规则是不同的。C++编译函数方法是 使用mangle的技术 。
void func(int age) { } void func(int age, int height) { } /*如果有这两个函数要被调用,在C语言中函数重载是不允许的,那么在C++中为什么可以呢。 C++中就是使用了mangle技术,对函数重载的函数名加上编译器中自定义规则的表示符,编译之后的函数名就会不一样。 例如 func(int age) -> func_int(int age) func(int age, int height) -> func_int_int(int age, int height) */
而在C语言中是没有这个技术的,所以如果我们想要调用C语言开发的一些API,就需要使用 extern "C" 修饰C语言的函数声明。
本文共计895个文字,预计阅读时间需要4分钟。
在C++开发中使用`extern C`的原因是C和C++的编译规则不同。为了确保C++代码中可以正确调用C语言编写的函数,需要使用这种声明。
例如,如果存在以下两个函数:cppvoid func(int age) {}void func(int age, int height) {}需要确保它们可以被正确调用,可以这样声明:cppextern C void func(int age);extern C void func(int age, int height);
为什么要是用 extern "C"
在进行C++开发的时候,由于C、C++编译规则是不同的。C++编译函数方法是 使用mangle的技术 。
void func(int age) { } void func(int age, int height) { } /*如果有这两个函数要被调用,在C语言中函数重载是不允许的,那么在C++中为什么可以呢。 C++中就是使用了mangle技术,对函数重载的函数名加上编译器中自定义规则的表示符,编译之后的函数名就会不一样。 例如 func(int age) -> func_int(int age) func(int age, int height) -> func_int_int(int age, int height) */
而在C语言中是没有这个技术的,所以如果我们想要调用C语言开发的一些API,就需要使用 extern "C" 修饰C语言的函数声明。

