首页 > 解决方案 > 内联函数全局范围

问题描述

正如我在这里读到的,内联函数不必内联。所以假设我们有这样的代码:

int a = 0;

inline void myFunc(){
    extern int a;
    a = 1;
}

int main(){
    int a = 0;
    myFunc();
}
  1. 标准是否保证a将分配哪个变量1
  2. 内联函数是否在内联之前编译为特定代码?如果是这样,如果我使用register关键字 for ainmain怎么办?

编辑:全局int a不必在同一个 .c 文件中声明

标签: c

解决方案


内联函数不会将其引入调用者的范围。在函数中声明的标识符(例如amain您的示例中)在其他函数中不可见。

所以inline是无关紧要的,顶层a是值发生变化的那个。


推荐阅读