inline 关键字主要功能是为了 代替掉 宏代码片段。

 在C++中使用关键字inline关键字声明内联函数。

inline int fun(int a,int b)
{
return a < b ? a : b; //如果a<b 成立 a=a 否则a=b
}

  

  

#include <stdio.h>

#define FUN(a,b) ((a) < (b) ? (a) : (b))

inline int fun(int a,int b)
{
return a < b ? a : b; //如果a<b 成立 a=a 否则a=b
} int main(int argc, char *argv[])
{
int a = ,b=;
int val = FUN(++a,b);
printf("Begin...\n");
printf("val = %d\n",val);
printf("a = %d\n",a);
printf("b = %d\n",b);
printf("End...\n");
return ;
}

  如果调用宏FUN    int val = FUN(++a,b); 展开就是  int val = ((++a) < (b) ? (++a) : (b));  这里的Val = 3

  而调用 fun 这个函数  int val = 2

  从而说明 宏代码块有一个缺点就是宏代码块只是做内容的替换。

C++ 中inline 内联编译的限制:

  1、不能存在任何形式的循环语句

  2、不能存在过多的条件判断语句

  3、函数体不能过于庞大

  4、不能对该函数进行取地址操作

  5、内联函数声明必须在调用语句之前。

内联函数:

C++编译器可以将一个函数进行内联编译

C++编译器直接将函数体插入函数调用的地方,从而内联函数没有普通函数调用时的额外开销。(压栈、跳转、返回)。

注意:C++编译器不一定满足函数的内联请求,也就是说使用inline 关键字声明内联函数可能会被编译器拒绝。从而建立内联失败

强制内联:

C++编译器提供了 扩展语法,能够对函数进行强制内联

  g++ :_attrbute_((always_inline))  属性

  MSVS:_forceinline

C++ 内联函数 inline关键字的更多相关文章

  1. (转载)内联函数inline和宏定义

    (转载)http://blog.csdn.net/chdhust/article/details/8036233 内联函数inline和宏定义   内联函数的优越性: 一:inline定义的类的内联函 ...

  2. 内联函数inline的用法

    一.什么是内联函数 在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗.为了解决这个问题,特别的引入了inline修饰符,表示为内联函数.  栈空间就是指放 ...

  3. 【转】ios内联函数 inline

    ios内联函数 inline 缘由 由于在学习使用UIScrollVew开发的过程中,碰到下面这个属性(设置内边距): @property(nonatomic) UIEdgeInsets scroll ...

  4. 07 c++中的内联函数inline

    文章链接: 问题描述:类中成员函数缺省默认是内联的,如果在类定义时就在类内给出函数定义,那当然最好.如果在类中未给出成员函数定义,而又想内联该函数的话,那在类外要加上 inline,否则就认为不是内联 ...

  5. 《挑战30天C++入门极限》新手入门:关于C++中的内联函数(inline)

        新手入门:关于C++中的内联函数(inline) 在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数. 可能说到这里,很 ...

  6. iOS OC内联函数 inline的详解

    inline 在iOS中的一些框架中,static inline是经常出现的关键字组合. static自不用多说,表示在当前文件中应用,如 static A, 在其它文件中也可以出现static A. ...

  7. 内联函数 inline

    (一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int ...

  8. 从零开始学C++之从C到C++(二):引用、内联函数inline、四种类型转换运算符

    一.引用 (1).引用是给一个变量起别名 定义引用的一般格式:类型  &引用名 = 变量名: 例如:int a=1; int  &b=a;// b是a的别名,因此a和b是同一个单元 注 ...

  9. C++ 内联函数inline

    http://blog.csdn.net/u011327981/article/details/50601800 1.  内联函数 在C++中我们通常定义以下函数来求两个整数的最大值: 复制代码 代码 ...

随机推荐

  1. sqli-labs(46)

    0X01首先我们先来看一下源码 发现查询语句变成了 order by  参数也变成了 sort 看看是什么样的 ()首先看看本关sql语句 $sql = "SELECT * FROM use ...

  2. springboot 使用redis

    安装redis教程:https://www.cnblogs.com/nongzihong/p/10190489.html 依赖: <!--配置redis--> <dependency ...

  3. 20191031-2 Beta阶段贡献分配规则

    此次作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9910 贡献分分配规则: 组内一共五名同学,贡献分共计50分. 1.每人 ...

  4. LeetCode 61. 旋转链表(Rotate List)

    题目描述 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出 ...

  5. leetcode-hard-array-54. Spiral Matrix-NO

    mycode 思路:这种方格图一定要预先设置定位的变量,例如最大的长.宽,变化中的长.宽,在while循环中也要不断判断是否满足break条件 class Solution(object): def ...

  6. 方差分析(python代码实现)

    python机器学习-乳腺癌细胞挖掘(欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章) https://study.163.com/course/introduction ...

  7. N2RR

    一.背景 氨(NH 3)是一种新兴的能量载体,在液氨中含有17.6%(重量)的氢,而在甲醇中的含量为12.5%(重量),很可能成为未来氢能经济的有希望的候选者.然而,如果基于NH 3的肥料不足以养活世 ...

  8. KNN原理小结

    K近邻法(K-nearest neighbors,KNN)既可以分类,也可以回归. KNN做回归和分类的区别在于最后预测时的决策方式.KNN做分类时,一般用多数表决法:KNN做回归时,一般用平均法. ...

  9. WPF RTSP存储到一个文件中的位置

    Vlc.DotNet.Core.Medias.MediaBase media1 = new Vlc.DotNet.Core.Medias.PathMedia(" CodeGo.net med ...

  10. Java学习笔记之ArrayList基本用法

    原文地址,转载请注明出处:https://blog.csdn.net/GongchuangSu/article/details/51514389 ArrayList简介 ArrayList是一个其容量 ...