区别: 作用对象:Static主要用于变量和函数的声明,限定其作用范围;Inline主要用于函数声明,指示编译器内联展开函数。 作用时间:Static影响变量和函数的生命周期和作用域;Inline影响函数的调用方式。 强制性:Static是强制修饰符,决定了变量或函数的特定属性;Inline是建议性修饰符,编译器可以选择是否进行内联展开。 联系: 性...
将static变量放到头文件里,想表达的含义或许是所有源文件都能使用同一个静态变量,但这是错误的理解。 static变量的作用域只限制与定义它的源文件中,其他源文件不能访问。如果头文件中有static变量,由于不同源文件中的static变量可以同名,那么在所有包含该头文件的源文件中都定义了仅自己可见的static变量,不同源文件...
int get_id() { static int x = 0; x += 10; return x; } int main(int argc, const char **argv) { printf("%d", get_id()); // 10 printf("%d", get_id()); // 20 printf("%d", get_id()); // 30 return 0; } // --- 和下面功能上是一样的,但上面的x别的地方不能访...
简而言之,可以使用static、extern说明符来控制(好吧,这里很不准确,因为链接属性的详细规则比较复杂、琐碎,它不仅和static、extern有关,还和其他事情有关,在这里我只关注部分情形)。 声明说明符 -specifiers 回到本文的标题上来,static、extern、inline都是声明说明符,在声明时使用(当然不是任何声明都能用),并赋予某种...
static只写在声明处,inline只写在定义处。涉及static的组合只有一种:inlinestatic。使用的时候两个关键词的位置遵照各自的规则:static只写在声明处,inline只写在定义处。Inlinestatic成员函数也是一种inline函数,所以其定义和其他inline函数一样,应当放在.h文件中。
static关键字在内核驱动中很常见,举一个常见用法: 在内核驱动中,static 关键字可以用于实现驱动隔离的效果。通过使用 static 关键字将函数和变量的作用域限定在当前文件中,从而隐藏其对其他文件的可见性。这样可以有效地将不同模块之间的功能隔离开来,减少命名冲突和代码耦合。
static和inline联合使用 static是静态修饰符,由其关键字修饰的变量会保存到全局数据区,对于普通的局部变量或者全局变量,都是由系统自动分配内存的,并且当变量离开作用域的时候释放掉,而使用static关键字来修饰,只有当程序结束时候才会释放掉,使用static inline修饰时,函数仅在文件内部可见,不会污染命名空间,另外,函数在运...
C/C++中static、const和inline三种关键字的介绍 一、关于static static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。 static 的两大作用: 一、控制存储方式
相信inline, extern, static这三个关键字对于C++程序员是非常熟悉的,但有些时候,其中隐藏的陷阱,可能会给你的程序带来一些很难诊断的问题。 1. inline 我们先聚焦于inline函数(内联函数)。inline可以与名称空间一起使用,但这种用法并不常见。最初,inline关键字的使用有两个目的: ...
进一步,static inline修饰的函数或变量与单独使用static修饰的效果相同。需要注意的是,inline不能用于局部变量。在类的上下文,非const静态成员变量的初始化方式在C++17前后有所不同:C++17允许在类内直接使用static inline进行初始化;C++17之前则必须在类外完成初始化。对于C++17之前的类内静态变量,若在...