zoukankan      html  css  js  c++  java
  • c++之函数原型

    函数原型:

    [作用域] [函数连接规范] 返回值类型 [函数调用规范] 函数名 (类型1[形参1]...);

    函数定义:

    [函数连接规范] 返回值类型 [函数调用规范] 函数名 (形参列表)

    {......}

    接口函数一定要指定调用规范,若不指定(使用默认),当别人声明该接口时与默认的调用规范不一致(函数原型与实现的调度规范不一致)时,将发生编译连接错误,或运行时崩溃。

    函数调用规范:

     _cdecl   : c/c++默认规范,从右向左压参,能用于可变参数,调用函数负责堆栈清理。

    _stdcall  : Win API调用规范,从右向左压参,被调函数负责堆栈清理,若函数为变参时,会自动转换为_cdecl。

    _thiscall : c++非静态成员函数调用默认规范,不可变参,调用时,this指针保存到ECX寄存器。其它与_stdcall一致。

    _fastcall : 实参全放到寄存器中,所以很快,不能用于成员函数,被调函数负责清理堆栈。

    函数连接规范:

    主要影响名字的改编方案。

    多语言开发时,要统一函数、变量、数据类型、常量等的连接规范。

    常用的规范是 extern "c" . c++中调用c编译函数时,通常要使用此连接。应为c++比c多了重载函数的能力,为了区别重载函数,在c++编译器改编重载函数名称时与c的不一样。如:void func(int a, int b);对于c编译器改编后的名字可能是_func, 而c++编译器改编后可能是_func_int_int。

  • 相关阅读:
    迁移学习综述
    分析 Kaggle TOP0.1% 如何处理文本数据
    软件工程提问回顾与个人总结
    洛谷 4219/BZOJ 4530 大融合
    洛谷 1486/BZOJ 1503 郁闷的出纳员
    【模板】文艺平衡树
    【模板】树套树(线段树套Splay)
    【模板】可持久化线段树
    【模板】可持久化平衡树
    【模板】左偏树
  • 原文地址:https://www.cnblogs.com/songcf/p/3162567.html
Copyright © 2011-2022 走看看