Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359544
  • 博文数量: 60
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 1138
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-20 16:18
个人简介

最多140个字

文章分类

全部博文(60)

文章存档

2016年(1)

2015年(34)

2014年(25)

分类: C/C++

2014-03-18 10:15:08

//C++ Primer 第四版

1,C++使用链接指示(linkage directive)指出任意非C++函数所用的语言。
2,链接指示有两种形式:单个的或复合的。链接指示不能出现在类定义或函数定义的内部,它必须出现在函数的第一次声明上。
3,声明非C++函数:
extern "C" size_t strlen(const char *);
extern "C"{
    int strcmp(const char*,const char*);
    char* strcat(char*,const char*);
}
4,可以将多重声明形式应用与整个头文件。例如,C++的cstring头文件可以像这样:
extern "C" {
#include
}
当将#include指示放在复合链接指示的花括号的时候,假定头文件中的所有普通函数声明都是用链接指示的语言编写的函数。链接指示可以嵌套,所以,如果头文件包含了带链接指示的函数,该函数的链接不熟影响。
5,Linkage Direcives Apply to the Entire Declaration:
When we use a linkage directive,it applies to the function and any function pointers used as the return type or as a parameter teype:
//f1 is a function ;its parameter is a pointer to a C function.
extern "C" void f1(void (*)(int) );
This declaration says that f1 is a C function that doesn't return a value. It has one parameter,which is a pointer to a function that return s nothing and takes a single int parameter. The linkage directive applies to the function pointer as well as to f1.When we call f1,we must pass it the name of a C function or a pointer to a C function.
Because a linkage directive applies to all the functions in a declaration ,we must use a typedef to pass a pointer to a C function to a C++ function:
//FC is a pointer to C function
extern "C" typedef void FC(void);
//f2 is a C++function with a parameter that is a pointer to a C function
void f2(FC *);

阅读(1859) | 评论(0) | 转发(0) |
0

上一篇:Mangling

下一篇:插入排序

给主人留下些什么吧!~~