内联函数为什么不能声明定义分离?

内联函数为什么不能声明定义分离?

首先明确几点:

  • inline 关键字只给编译器提供建议,具体是否内联,全看编译器;

  • inline 关键字只作用在函数的定义处,不作用在函数的声明处;

  • inline 关键字起作用时,会导致在汇编阶段不会将函数的定义和地址写入符号表。

所以,当内联函数的声明定义分离进行编译时,由于在汇编阶段头文件会写入函数的声明和无效地址,源文件不会写入函数的定义和地址,最后符号汇总出来就只有函数的声明和无效地址。就会导致在链接阶段其它源文件调用该函数的地方找不到该函数的地址和定义。

相关推荐

  1. 函数为什么声明定义分离

    2024-05-09 20:22:07       22 阅读
  2. inline函数为什么是虚函数

    2024-05-09 20:22:07       48 阅读
  3. 记录 | CUDA编程中声明函数的方法

    2024-05-09 20:22:07       54 阅读
  4. Kotlin 函数

    2024-05-09 20:22:07       58 阅读
  5. C++函数

    2024-05-09 20:22:07       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-09 20:22:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-09 20:22:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-09 20:22:07       82 阅读
  4. Python语言-面向对象

    2024-05-09 20:22:07       91 阅读

热门阅读

  1. (五)Linux的编程环境

    2024-05-09 20:22:07       31 阅读
  2. uniapp遍历数组对象的常见方法

    2024-05-09 20:22:07       29 阅读
  3. 【LeetCode】数组——hashmap的妙用

    2024-05-09 20:22:07       32 阅读
  4. Github 2024-05-06 开源项目日报 Top10

    2024-05-09 20:22:07       35 阅读