当前位置: 首页 > wzjs >正文

公司手机网站制作公司建官网要多少钱

公司手机网站制作,公司建官网要多少钱,惠州网站制作案例,网站建设的企业一、编译器对函数名的处理 1. C与C的差异 C编译器:保留原始函数名,无额外处理。例如: int add(int a, int b) { return a b; } 在汇编代码中仍为add。 C编译器:通过name mangling(名称修饰)生成唯一函数…

一、编译器对函数名的处理

1. C与C++的差异
  • C编译器:保留原始函数名,无额外处理。例如:

    int add(int a, int b) { return a + b; }

    在汇编代码中仍为add

  • C++编译器:通过name mangling(名称修饰)生成唯一函数标识,格式为_Z[函数名长度][函数名][参数类型缩写]。例如:

    int add(int, int) → _Z3addii
    float add(float, float) → _Z3addff

    作用:支持函数重载,确保链接时能区分同名不同参的函数。

2. 扩展:编译器实现差异
  • GCC/Clang:遵循Itanium C++ ABI规范,使用上述修饰规则。

  • MSVC:采用不同修饰规则,例如:

    int add(int, int) → ?add@@YAHHH@Z
  • 查看修饰名:可通过nm命令或objdump工具查看目标文件中的符号表。


二、函数重载

1. 核心规则
  • 定义:同一作用域内,函数名相同但参数列表不同(参数类型、数量或顺序不同)。

  • 返回值类型不同不构成重载条件:

    int add(int a, int b); // 合法
    double add(int a, int b); // 编译错误
2. 本质与实现
  • 通过name mangling生成唯一符号,链接时正确绑定调用目标。

  • 限制:C语言不支持函数重载,因无name mangling机制。

3. 扩展:重载解析优先级

编译器按以下顺序匹配最佳函数:

  1. 精确匹配:参数类型完全一致。

  2. 类型提升:如charint

  3. 标准转换:如intdouble

  4. 用户定义转换:如类构造函数或转换运算符。


三、默认参数

1. 规则详解
  • 声明位置:默认参数只能在函数声明中指定,定义中不可重复:

    int add(int a, int b, int c = 100); // 声明
    int add(int a, int b, int c) { return a + b + c; } // 定义

    错误示例:

    int add(int a, int b, int c = 100) { ... } // 编译错误
  • 参数顺序:默认参数必须从右向左连续设置:

    void func(int a, int b = 10, int c = 20); // 正确
    void func(int a = 5, int b, int c); // 错误:c未设置默认值
2. 扩展:默认参数与函数重载的交互
  • 默认参数可能导致函数重载的二义性:

    void print(int a, int b = 0);
    void print(int a);
    print(10); // 错误:编译器无法确定调用哪个版本

四、内联函数

1. 核心机制
  • 作用:消除函数调用开销,将函数体直接插入调用位置。

  • 使用方式

    • 关键字inline:向编译器建议内联(非强制)。

    • GCC扩展属性:__attribute__((always_inline))强制内联(仍需编译器支持):

      inline __attribute__((always_inline)) int add(int a, int b) {return a + b;
      }
2. 适用场景与限制
  • 适用:短小、频繁调用的函数(如简单数学运算)。

  • 不适用:递归函数、包含循环或复杂逻辑的大函数。

  • 注意事项

    • 过度内联可能导致代码膨胀,影响缓存局部性。

    • 编译器可能忽略内联建议(如优化级别为-O0时)。

3. 扩展:内联函数 vs 宏函数
特性内联函数宏函数(#define
类型安全是(编译器检查类型)否(文本替换,可能出错)
调试支持支持(有符号信息)不支持(预处理器阶段替换)
作用域遵守作用域规则全局替换,可能污染命名空间
参数求值参数仅求值一次可能多次求值(如MAX(a++, b)

五、高级扩展:C++11后的相关特性

1. constexpr函数
  • 隐式内联:C++11起,constexpr函数默认具有内联属性,支持编译期计算:

    constexpr int add(int a, int b) {return a + b;
    }
2. 内联变量(C++17)
  • 允许在头文件中定义内联变量,避免多重定义错误:

    inline int global = 42; // 允许多次包含该头文件

总结

  1. 函数重载依赖C++的name mangling机制,通过参数列表区分同名函数。

  2. 默认参数需严格遵循声明顺序规则,避免二义性调用。

  3. 内联函数是性能优化手段,需权衡代码体积与执行效率,优先替代宏函数以提高安全性。

  4. 现代C++特性(如constexpr)进一步扩展了内联的应用场景,支持编译期计算。

http://www.dtcms.com/wzjs/65611.html

相关文章:

  • 淄博网站建设bonpro百度浏览器下载官方免费
  • 能自己做网站接业务吗网店推广方案策划书
  • 无锡网站制作排名百度推广优化师
  • 电脑怎么下载网页视频邵阳网站seo
  • 网站技术维护费北京搜索引擎优化seo
  • 做企业网站的步骤企业网络营销推广
  • 怎么建立一个独立的网站深圳seo优化推广公司
  • 温州网站建设服务中心谷歌外贸网站
  • 佛山做网站哪家好网站设计与制作公司
  • 计生网站生育文明建设网站搭建公司
  • 上海网站建设广告语代刷网站推广链接免费
  • 投资做网站湘潭关键词优化服务
  • 广安住房和城乡建设厅网站舆情分析网站免费
  • 网站制作价格便宜最快新闻资讯在哪看
  • 做网站怎么收费的中国十大软件外包公司
  • 做足球行业深度内容的网站谷歌浏览器官网下载安装
  • 石家庄公司建站推广拉新任务的平台
  • 潍坊市网站制作关键词优化上海
  • 1.86神华网站两学一做企业网站开发费用
  • 网站建设与维护管理办法投广告的平台有哪些
  • 海珠建设网站广告推广怎么做最有效
  • wordpress保存文件优化手机流畅度的软件
  • 网站只做五周sem工具是什么
  • 专业网站建设制中视频自媒体账号注册下载
  • 凡高网站建设济南seo排名搜索
  • 遵义在百度做个网站多少钱北京突发重大消息
  • 做音乐网站的目的seo网站技术培训
  • wordpress在线聊天插件搜狗优化排名
  • 沈阳哪家公司网站做的好网络平台有哪些
  • 英文 网站 字体营口seo