C/C++ inline 函数

简介: C/C++中包含了一类inline函数,其只是单纯在原本函数申明或者定义前面多了一个inline 但是带来含义的确实不一样的。 如果不带inline那么主函数执行到函数入口处会跳到相应的函数代码除继续执行,在内存 中的代码段内存中这些代码不是连续的,这样肯能带来一些时间损耗 如果加入inline后函数会copy一份到主函数中,这样占用一定的内存但是不会jump(应该汇编使用的jump指令) 那么这样一来,可能inline函数适用的范围为函数代码本身代码量很少,而且执行非常快。


C/C++中包含了一类inline函数,其只是单纯在原本函数申明或者定义前面多了一个inline
但是带来含义的确实不一样的。
如果不带inline那么主函数执行到函数入口处会跳到相应的函数代码除继续执行,在内存
中的代码段内存中这些代码不是连续的,这样肯能带来一些时间损耗
如果加入inline后函数会copy一份到主函数中,这样占用一定的内存但是不会jump(应该汇编使用的jump指令)


那么这样一来,可能inline函数适用的范围为函数代码本身代码量很少,而且执行非常快。
如果代码量大那么COPY占用的内存过多,如果执行非常慢,减少JUMP带来的提升只是
微不足道的提升,下面演示他的使用
  
  
  以下的列子为了展示3个问题
  1、inline function 申明
  2、使用typedef 定义一个函数指针的别名,并且使用它来声明一个f_p的变量接受add的地址
  3、函数返回的const类型的指针必须和在主函数中使用const int *接受
  
  1 /*************************************************************************
  2     > File Name: inline.cpp
  3     > Author: gaopeng
  4     > Mail: gaopp_200217@163.com 
  5     > Created Time: Thu 26 May 2016 09:45:18 PM CST
  6  ************************************************************************/
  7 
  8 #include
  9 
 10 typedef  const int* (*Fun_p)(const int *input);//typedef define a Fun_p alias to a function pointer 
 11 using namespace std;
 12 
 13 inline const int * add(const  int *input);
 14 int main(void)
 15 {
 16     int input = 2;
 17     const int *re;
 18     Fun_p  f_p = add;
 19     re = f_p(&input);
 20     cout<< *re <<endl;
 21 
 22 }
 23 
 24 
 25 
 26 inline const int * add(const  int *input)
 27 {   
 28     static int addva; 
 29     addva = *input+*input;
 30     return &addva;
 31 
 32 }         
</endl;
相关文章
|
2月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
2月前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
71 6
|
2月前
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
32 0
C++ 多线程之线程管理函数
|
2月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
34 3
|
2月前
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
313 1
|
2月前
|
存储 编译器 C++
C++入门3——类与对象2-1(类的6个默认成员函数)
C++入门3——类与对象2-1(类的6个默认成员函数)
42 1
|
2月前
|
安全 编译器 C++
【C++篇】C++类与对象深度解析(三):类的默认成员函数详解
【C++篇】C++类与对象深度解析(三):类的默认成员函数详解
21 3
|
2月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
54 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
2月前
|
存储 编译器 C++
【C++】掌握C++类的六个默认成员函数:实现高效内存管理与对象操作(二)
【C++】掌握C++类的六个默认成员函数:实现高效内存管理与对象操作
|
3月前
|
编译器 C++
【C++核心】函数的应用和提高详解
这篇文章详细讲解了C++函数的定义、调用、值传递、常见样式、声明、分文件编写以及函数提高的内容,包括函数默认参数、占位参数、重载等高级用法。
28 3