首页 > 其他分享 >static inline

static inline

时间:2022-11-15 17:35:03浏览次数:31  
标签:函数 int 定义 static inline define

我们知道一般的函数调用都会通过call的方式来调用,hacker很容易对一个函数做手脚,如果是以inline的方式编译的,会把该函数的code拷贝到每次调用该函数的地方;而static会让生成的二进制文件中没有清晰的符号表,让逆向的人很难弄清楚逻辑

static int isValidate(int id) __attribute__ ((always_inline));
static inline int isValidate(int id);

定义:有函数的结构,但不具备函数的性质,类似于宏替换。代码中使用inline定义,能否形成内联函数,还要看编译器对内联函数体内部的定义的具体处理

1.使用inline

修饰的函数,在编译的时候,会把代码直接嵌入调用代码中。就相当于用#define 宏定义来定义一个add 函数那样!与#define的区别是:
1)#define定义的格式要有要求,而使用inline则就行平常写函数那样,只要加上inline即可!
2)使用#define宏定义的代码,编译器不会对其进行参数有效性检查,仅仅只是对符号表进行替换。
3#define宏定义的代码,其返回值不能被强制转换成可转换的适合的转换类型。

2.在inline加上static修饰符

只是为了表明该函数只在该文件中可见!也就是说,在同一个工程中,就算在其他文件中也出现同名、同参数的函数也不会引起函数重复定义的错误

标签:函数,int,定义,static,inline,define
From: https://www.cnblogs.com/amxiang/p/16893157.html

相关文章

  • C语言inline关键字
    一、inline关键字的概念inline关键字是C99标准的型关键字,其作用是将函数展开,把函数的代码复制到每一个调用处。这样调用函数的过程就可以直接执行函数代码,而不发生跳转、......
  • static关键字
    static关键字static:静态的static可以用来修饰:属性、方法、代码块、内部类使用static修饰属性:静态变量(或类变量)属性,按是否使用static修饰,又分为:静态属性vs非静态属......
  • c++中尽量用const,enum,inline替换#define
    一般声明在头文件,注意:在class中声明常量通常要加static例:classA {public:staticconstinta=0;} 对于单纯的常量,最好以const或enums替换#define......
  • 小程序报错:[渲染层网络层错误] Failed to load local image resource /static/logo.pn
    问题来源我在刚开发微信小程序时发现了一个问题,当我用hbuilderx运行小程序到微信开发者工具中时,出现了报错。报错后并且也出不来图片,当时也去百度了许多用法,发现大多数......
  • Specific static library / shared library / header path on OSX
    StaticlibrarypathexportLIBRARY_PATH="/usr/local/lib"SharedlibraryordynamiclibrarypathexportDYLD_LIBRARY_PATH="/usr/local/lib"Headerfilepathex......
  • java——静态static关键字001
    stataic关键字概述:           static关键字修饰成员变量:              static关键字修饰成员方法:    ......
  • static 关键字
    静态变量(类变量)、静态方法(类方法):static声明的属性或方法。静态变量/静态方法生命周期和类相同,在整个程序执行期间都有效。它有如下特点:为该类的公用变量,属于类,......
  • Java--static 关键字小研究
    一、用static修饰的静态代码块:classDemo{{System.out.println("1、构造块。");}static{System.out.println("0、静态代码块。");}publicDemo(){Sys......
  • C温故补缺(三):存储类声明符(auto,register,extern,static)
    auto,register,extern,static四个存储类声明符,用于定义变量/函数的作用域和声明周期①auto:自动变量,即普通变量,在平时定义变量时会自动赋予其auto类型被auto修饰的......
  • Kotlin 中的 Lambda 与 Inline
    在Kotlin中,有很多很酷很实用的特性,比如Lambda和高阶函数,利用这些特性,我们可以更加快速的实现开发,提升效率。比如我们实现一个捕获Throwable,安全执行部分代码的高阶函数fun......