• 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。

  • 相关阅读:
    SQL Injection
    yum命令不能使用的相关错误
    linux下RTNETLINK answers: File exists的解决方案
    XShell上传、下载文件(使用sz与rz命令)!
    Linux中iptables设置详细
    linux shell awk用法
    linux sed命令 用法
    Tcpdump 的用法
    VIM文本替换命令
    linux的tar命令详情;linux多个文件压缩打包到一个压缩文件
  • 原文地址:https://www.cnblogs.com/songcf/p/3162567.html
Copyright © 2020-2023  润新知