extern "C"用于使C++编译器以C语言链接方式处理函数,避免名字修饰,实现C与C++混合编程时的符号兼容。

在C++程序中,extern "C" 的主要作用是告诉C++编译器:对指定的函数或变量使用C语言的链接方式(linkage)进行编译和链接。这在实现C++与C混合编程时非常关键。
C++支持函数重载、类、命名空间等特性,因此在编译时会对函数名进行名字修饰(name mangling),将函数名、参数类型等信息编码成一个唯一的符号名。而C语言不支持这些特性,编译后的函数名基本保持原样。
例如:
如果C++代码直接调用C编译生成的目标文件,或者C代码调用C++导出的函数,链接器会因为找不到匹配的符号而报错。这时就需要 extern "C" 来解决这个问题。
立即学习“C++免费学习笔记(深入)”;
它可以用于声明单个函数或一组函数:
extern "C" void my_c_function(int);这样写之后,这些函数在C++中会被当作C风格函数处理——不进行名字修饰,使用C的调用约定,便于跨语言调用。
当你有一个供C和C++共用的C语言头文件(比如 mylib.h),需要确保C++编译器能正确识别其中的函数声明:
#ifndef MYLIB_H这里通过 __cplusplus 宏判断是否由C++编译器处理。如果是,则加上 extern "C" 包裹函数声明;C编译器则忽略这部分,正常编译。
基本上就这些。extern "C" 不改变语法,也不影响函数实现,它只影响编译器如何生成符号名和调用方式。掌握它,是进行C/C++混合编程的基础技能。
以上就是c++++中extern "C"有什么作用_extern "C"实现C++与C混合编程的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号