CCS中头文件添加extern C { }语句的作用
来源:互联网 发布:大数据开发主要做什么 编辑:程序博客网 时间:2024/06/04 18:20
CCS工程的头文件中添加extern "C" { }语句的原因是,由于C++支持函数重载,一个函数的名字可能有几个,在编译到汇编的时候,这些函数可能被重新命名(不是简单的在开头添加下划线'_'),这样C语言或汇编在链接由C++实现的函数时就会找不到具体位置。
C语言的规则是添加"_"前缀表示函数在汇编中的名称,例如main函数在汇编中为_main,但是C++不行,C++有重载。比如有以下函数:
void fun(const char* msg)
{
printf("%s\n", msg);
}
void fun(int val)
{
printf("%d\n",val);
}
int main()
{
fun("hello");
fun(123);
return 0;
}
函数fun有2个,如果将fun简单用"_"前缀的话,就会出现2个不同的函数,但是名字都是_fun。C++的处理方法是重命名,第一个可能被命名为_fun_const_char_XCC1,第二个可能为_fun_int_SXX,名字中除了参数信息,可能还有一些随机字串(这样是为了避免冲突)。如果将void fun(int val)函数导出为C语言接口,就要在声明的时候添加extern "C"修饰。如下所示:
#ifndef XXX_H
#define XXX_H
#ifdef __cplusplus
extern "C" {
#endif
//各种声明
#ifdef __cplusplus
}
#endif
#endif
C语言的规则是添加"_"前缀表示函数在汇编中的名称,例如main函数在汇编中为_main,但是C++不行,C++有重载。比如有以下函数:
void fun(const char* msg)
{
printf("%s\n", msg);
}
void fun(int val)
{
printf("%d\n",val);
}
int main()
{
fun("hello");
fun(123);
return 0;
}
函数fun有2个,如果将fun简单用"_"前缀的话,就会出现2个不同的函数,但是名字都是_fun。C++的处理方法是重命名,第一个可能被命名为_fun_const_char_XCC1,第二个可能为_fun_int_SXX,名字中除了参数信息,可能还有一些随机字串(这样是为了避免冲突)。如果将void fun(int val)函数导出为C语言接口,就要在声明的时候添加extern "C"修饰。如下所示:
#ifndef XXX_H
#define XXX_H
#ifdef __cplusplus
extern "C" {
#endif
//各种声明
#ifdef __cplusplus
}
#endif
#endif
- CCS中头文件添加extern C { }语句的作用
- CCS头文件路径的添加
- 头文件中extern C的用法
- 头文件中extern C的用法
- 在函数和包含头文件中使用extern "C" 的作用
- CCS中gel文件的作用
- C中头文件的作用
- C++头文件中常见的extern "C"
- extern "c"用法 extern "C"与.def文件的作用
- 头文件中对extern的思考
- extern "C"与.def文件的作用
- extern “C”与.def文件的作用
- 如何在C++程序中添加C语言程序——extern C的作用详解
- linux中常用C/C++一些头文件的作用
- linux中常用C/C++一些头文件的作用
- Linux中常用C/C++一些头文件的作用
- Linux中常用C/C++一些头文件的作用
- C 语言中 头文件 的作用和 包含规范
- MessageDigest 类的用法
- PL-SQL Developer 常用技巧
- MSSql数据库锁
- 二叉树实验
- 上拉电阻与下拉电阻
- CCS中头文件添加extern C { }语句的作用
- 解决c# winform下添加项目引用无效情况
- log4j
- 左旋转字符串
- joomla学习之mod_gk_weather Modules
- firefox与IE对javascript和CSS的区别
- xcode4的环境变量,Build Settings参数,workspace及联编设置
- 免费的diagram绘制工具
- gtk list