连接规范
来源:互联网 发布:淘宝权重0是什么意思 编辑:程序博客网 时间:2024/04/29 20:51
启动函数main()
main函数时系统内部默认调用的,即应用程序的启动函数在末尾调用了main名称,然后以它们的返回值为参数调用库函数exit函数,因此也就默认了main应该作为它的连接对象。如此看来main其实就是一个回调函数。
main函数限制:
1、不能重载
2、不能内联
3、不能定义为静态的
4、不能去其地址
5、不能由用户自己调用
。。。。。。
内部名称
在C语言中,所有函数不是局部于编译单元的static函数,就是具有extern连接类型和gobal作用域的全局函数,因此除了两个分别位于不同编译单元中的static函数可以同名外,全局函数不能同名,全局变量也是一样。其原因是c语言采用了一种极其简单的函数名称区分规则:仅在所有函数名前面添加前缀“_”。
但是c++不一样,c++中有重载,结构体,类等,所以它是利用重命名为“Name-Mangling”(名字修饰或名字改编)。即加作用域名称及重载函数的经过编码的参数信息。
————————————————————————————————————————————————————————————————————————
连接规范
在使用不同编程语言进行软件联合规范。因为采用不同的连接规范,那么连接的时候会造成不一致的内部名称,这肯定是错误的。
通用连接规范则属C连接规范:extern “C”使用如下:
1、对仅是一个类型,函数,变量或常量指定连接规范。
extern “C” void WinMain();
extern “C” const CLSID CLSID_DataConverter;
.....
2、如果是对一段代码限定连接规范。
#ifdef _cplusplus
extern "C"{
#endif
const int Max_AGX = 200;
#pragram pack(push,4)//4字节对齐
typedef struct_Person
{
char *m_Name;
int m_Age;
}Person,*PersonPtr;
#pragram pack(pop);
Person g_Me;
int _cdecl memcmp (const void *,const void *,size_t);
#ifdef _cplusplus
}
#endif
3、如果当前使用的是C++编译器,并且使用了extern “C”来限定一段代码的连接规范,但是又想令其中某行或某段代码保持C++连接规范,则可以编写extern "C++"。
- 连接规范
- 连接规范
- jsp连接数据库的规范总结
- frameset规范连接跳出框架原因分析
- FreeRDP基本连接和图像规范
- 为什么要遵循统一的函数连接规范?什么事连接规范
- ADO连接Access的几种规范做法
- ESP8266学习笔记6:ESP8266规范wifi连接操作
- 【JDBC4.2】JDBC规范中的连接池(未完待续)
- ESP8266学习笔记6:ESP8266规范wifi连接操作
- JDBC连接MySQL和Oracle数据库的规范写法
- 规范
- 规范?!
- 规范
- 规范
- 规范
- 规范
- 规范
- hdu4381Count the Building-多校9-1002-题解
- 乌鸦跟兔子
- VC 对话框支持拖动
- SqlServer中decimal(numeric )、float 和 real 数据类型的区别
- C语言中利用strtok分割字符串
- 连接规范
- linux expect 详解
- wince控件之自绘按钮(支持多种状态的图像加载、可通过图像创建不规程按钮)
- linux ant 安装
- 启用oracle自动归档模式
- 240个jQuery实现AJAX插件
- m个数字任选n个数组进行组合
- 一个可序列化的C#对象,如何转成一个XML格式的文件或字符串
- 配置Struts