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

宜昌网站制作做网站购买域名

宜昌网站制作,做网站购买域名,网站制作费用贵不贵,菜鸟是什么网站文章目录 内联函数#xff08;C99#xff09;参考 内联函数#xff08;C99#xff09; 通常#xff0c;函数调用都有一定的开销#xff0c;因为函数的调用过程包括建立调用、 传递参数、跳转到函数代码并返回。使用宏使代码内联#xff0c;可以避免这样的开销。 C99还… 文章目录 内联函数C99参考 内联函数C99 通常函数调用都有一定的开销因为函数的调用过程包括建立调用、 传递参数、跳转到函数代码并返回。使用宏使代码内联可以避免这样的开销。 C99还提供另一种方法内联函数inline function。读者可能顾名思义地认为内联函数会用内联代码替换函数调用。其实C99和C11标准中叙述的是“把函数变成内联函数建议尽可能快地调用该函数其具体效果由实现定义”。 因此把函数变成内联函数编译器可能会用内联代码替换函数调用并或执行一些其他的优化但是也可能不起作用。 创建内联函数的定义有多种方法。标准规定具有内部链接的函数可以成 为内联函数还规定了内联函数的定义与调用该函数的代码必须在同一个文件中。因此最简单的方法是使用函数说明符 inline 和存储类别说明符static。通常内联函数应定义在首次使用它的文件中所以内联函数也相当于函数原型。如下所示 #include stdio.h inline static void eatline() // 内联函数定义/原型 { while (getchar() ! \n) continue; } int main() { ... eatline(); // 函数调用 ... }编译器查看内联函数的定义也是原型可能会用函数体中的代码替 换 eatline()函数调用。也就是说效果相当于在函数调用的位置输入函数体中的代码 #include stdio.h inline static void eatline() //内联函数定义/原型 {while (getchar() ! \n)continue; } int main() {...while (getchar() ! \n) //替换函数调用continue;... }由于并未给内联函数预留单独的代码块所以无法获得内联函数的地址 实际上可以获得地址不过这样做之后编译器会生成一个非内联函 数。另外内联函数无法在调试器中显示。 内联函数应该比较短小。把较长的函数变成内联并未节约多少时间因 为执行函数体的时间比调用函数的时间长得多。 编译器优化内联函数必须知道该函数定义的内容。这意味着内联函数定 义与函数调用必须在同一个文件中。鉴于此一般情况下内联函数都具有内部链接。因此如果程序有多个文件都要使用某个内联函数那么这些文件 中都必须包含该内联函数的定义。最简单的做法是把内联函数定义放入头 文件并在使用该内联函数的文件中包含该头文件即可。 // eatline.h #ifndef EATLINE_H_ #define EATLINE_H_ inline static void eatline(){while (getchar() ! \n)continue; } #endif一般都不在头文件中放置可执行代码内联函数是个特例。因为内联函 数具有内部链接所以在多个文件中定义同一个内联函数不会产生什么问题。 与C不同的是C还允许混合使用内联函数定义和外部函数定义具 有外部链接的函数定义。例如一个程序中使用下面3个文件 如下代码所示3个文件中都定义了square()函数。 3个文件中的函数都调用了square()函数这会发生什么情况 //file1.c ... inline static double square(double); double square(double x) { return x * x; } int main(){double q square(1.3);... //file2.c ... double square(double x) { return (int) (x*x); } void spam(double v){double kv square(v);...//file3.c ... inline double square(double x) { return (int) (x * x 0.5); } void masp(double w){double kw square(w);... }file1.c文件中是inline static定义 file1.c文件中的main()使用square()的局部static定义。由于该定义也是inline定义所以编译器有可能优化代码也许会内联该函数。 file2.c 文件中是普通的函数定义因此具有外部链接 file2.c 文件中spam()函数使用该文件中 square()函数的定义该定义具有外部链接其他文件也可见。 file3.c 文件中是 inline 定义省略了static。 file3.c文件中编译器既可以使用该文件中square()函数的内联定义也可以使用file2.c文件中的外部链接定义。如果像file3.c那样省略file1.c文件inline定义中的static那么该inline定义被视为可替换的外部定义。注意GCC在C99之前就使用一些不同的规则实现了内联函数所以GCC可以根据当前编译器的标记来解释inline。 参考 《C Primer Plus》
http://icebutterfly214.com/news/54028/

相关文章:

  • 文字识别系统
  • SpringSecurity 集成 CAS Client 处理单点登录 - Higurashi
  • 25.11.20 最长不升序列LNIS和最长升序列LIS
  • 程序员手记
  • 详细介绍:MyBatis 与 Spring Data JPA 核心对比:选型指南与最佳实践
  • FreeSWITCH使用mod_fail2ban模块来提升安全
  • CF2165 VP 记录
  • 完整教程:Spring Boot Actuator全解析
  • 深入解析:css 的 clip-path 属性,绘制气泡
  • 深入解析:医疗多模态共情推理与学习一体化网络Python实现(2025扩充版)
  • es的sql语句 有哪些限制
  • find linux 文件
  • atom linux
  • ArangoDB并发控制如何进行负载均衡
  • access数据库和oracle使用便捷度
  • ArangoDB 文档存储怎样删除
  • Alluxio与MySQL的集成方式有哪些
  • 详细介绍:Python机器学习---6.集成学习与随机森林
  • Nov 20
  • 哈希表封装myunordered_map以及set - 详解
  • 斐波那契数列1-90
  • 北京离婚律师推荐:聚焦婚姻纠纷解决的专业法律服务
  • 查看指定文件名文件进行拷贝并进行压缩
  • 16. Ingress
  • WPF MVVM实战系列教程(二、使用Visual Studio 创建Prism项目)
  • 2025年11月份工信部人才交流中心PostgreSQL能力认证证书
  • 一样的吗?就是Flink中的Lookup join和Temporal join 的语法
  • 2025年工业啤酒设备厂家权威推荐榜单:啤酒设备厂家/精酿啤酒设备厂家/啤酒设备源头厂家精选
  • 2025最新推荐!云南旅游旅行社口碑排行榜,权威榜单助选云南旅游服务机构
  • 元宇宙与医疗健康的深度融合:重构诊疗、培训与健康管理新生态 - 指南