美文网首页
static inline

static inline

作者: Smallwolf_JS | 来源:发表于2021-06-27 19:13 被阅读0次

我们知道一般的函数调用都会通过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修饰符

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

转自
链接:https://www.jianshu.com/p/78b2207df754

相关文章

  • const,static,extern简介

    解释关键字 static,const,inline,Static,inline,volatilestatic 修饰...

  • static, static inline, extern, r

    static, static inline, extern, register, static const htt...

  • static inline

    在公司的代码中, 看到前辈写了一个判断对象是否为空值的方法, 瞬间被这个static inline弄得晕头转向, ...

  • static inline

    2019/07/16今天在看DPDK负载均衡的实例代码中,通过函数跳转,看到官方API后,发现了static in...

  • static inline

    我们知道一般的函数调用都会通过call的方式来调用,hacker很容易对一个函数做手脚,如果是以inline的方式...

  • 结构体

    这里CG_INLINE是一个宏:#define CG_INLINE static inline,这是系统的一...

  • 内联函数 inline

    内联函数的预编译指令 #define CG_INLINE static inline inlin...

  • iOS OC内联函数 inline

    inline 在iOS中的一些框架中,static inline是经常出现的关键字组合. static自不用多说,...

  • iOS OC中内联函数inline

    inline 在iOS中的一些框架中,static inline是经常出现的关键字组合。 static自不用多说,...

  • static inline 延伸

    此内容分为两个知识点: 0x01 static 字面意思为静态,一直在那里 修饰变量 main函数之前初始化,并且...

网友评论

      本文标题:static inline

      本文链接:https://www.haomeiwen.com/subject/vlwxultx.html