首页 > 编程语言 >C++ 内联函数 inline

C++ 内联函数 inline

时间:2023-12-04 17:15:24浏览次数:34  
标签:10 函数 int C++ 内联 getMax inline

宏定义实现和普通函数实现:

  - 宏定义是直接在实现的时候进行代码替换,可能产生结果异常问题。

  - 普通函数实现:调用函数进出函数体的时候时间开销可能过大。

 1 #include <iostream>
 2 using namespace std;
 3 //宏实现
 4 #define GETMAX(a, b)((a) > (b) ? (a) : (b))
 5 //函数实现
 6 int getMax(int a, int b)
 7 {
 8     return a > b ? a : b;
 9 }
10 int main()
11 {
12     int n = 10;
13     int n1 = GETMAX(n, 2);//10
14     //int n1 = ((10) > (2) ? (10) : (20));
15     int n2 = GETMAX(n++, 2);//11
16     //int n2 = ((10) > (2) ? (11) : (2));
17     int i = 10;
18     int n3 = getMax(i, 2);//10
19     //return 10 > 2 ? 10 : 2
20     int n4 = getMax(i++, 2);//10
21     //return 10 > 2 ? 10 : 2
22     cout << n1 << endl;
23     cout << n2 << endl;
24     cout << n3 << endl;
25     cout << n4 << endl;
26     system("pause");
27     return 0;
28 }

内联函数:一般是在当前项目的很多地方都要使用

  1.inline是对编译器的建议(结合普通函数和宏定义):建议编译器将函数置为内联,编译器根据开销判断是使用函数还是宏定义。

    一般会使用宏定义,函数体复杂或者Debug模式则使用普通函数调用。

  2.debug版本没有inline,为了方便调试

  3.内联函数必须写在头文件中

//inline.h 
inline int getMax(int a, int b)
{
    return a > b ? a : b;
}

Main.cpp

// Main.cpp
#include "inline.h"

    xxx

 

标签:10,函数,int,C++,内联,getMax,inline
From: https://www.cnblogs.com/gpf1997/p/17875402.html

相关文章

  • c++ friend关键字 友元
     在C++中,friend关键字用于声明友元函数或友元类1。友元函数或友元类可以访问当前类的私有成员和保护成员,即使它们不是当前类的成员函数或成员类1。友元函数是一个独立的函数,而友元类是一个类可以访问另一个类的私有成员和保护成员1。例如,如果要声明函数为一个类的友元,需要......
  • C++U5-08-二叉树1
    上节课作业分析讲解视频链接:https://pan.baidu.com/s/1_jaM_TlZmLJX4JbLuJtKzA?pwd=2us4提取码:2us4学习目标  树在C++中,二叉树是一种常用的数据结构,由节点(Node)组成,每个节点可以有最多两个子节点。二叉树具有以下几个主要的作用:存储和组织数据:二叉树可用于存储和组织大......
  • C++/Filesystem 文件类型
    #include<iostream>#include<filesystem>#include<string>namespacefs=std::filesystem;voiddemo_status(constfs::path&p,fs::file_statuss){std::cout<<p;switch(s.type()){casefs::file_type::none:......
  • C++U3-第3课-结构体
    上节课作业:链接:https://pan.baidu.com/s/1fBx8bS-J_FPDqBzn6Omp-g?pwd=1rn5提取码:1rn5学习目标在C++中,结构体(Struct)是一种用于组合多个相关数据项的自定义数据类型。结构体可以包含不同类型的成员变量和成员函数,并且可以通过.运算符来访问和操作它们。结构体在C++中具有以下......
  • C++-Python_多进程_多线程-协程-异步开发
    python多任务、并发编程等领域并发:宏观上并行,微观上串行并行:宏观上并行,微观上并行并发:I/O密集型作业运行态---阻塞态的转化并行:CPU密集型作业并发(Concurrent)、并行(Parallesim)、多线程(MultiThreaded)、多进程(Multiprocessing)、多任务(Multitasking)、......
  • 2.C语言和C++的几个标准(2023年12月4号)
    C语言和C++的区别C语言的设计理念:灵活、高效、性能极限C++的设计理念:面向对象为主 CPP:包含C语言(语法有微小差异)面向对象编程泛型编程STL标准模块库C++标准库 C语言是结构化语言:实例:我喜欢一个女孩C语言(......
  • C++中 enum 的使用
    C++中的枚举enum使用如果没有对应的范围限定,会很容易出现重定义的错误。如下的重定义错误,在一个文件中有如下两个枚举,编译时会出现重定义错误enumType{MIN_TYPE,MAX_TYPE,INPUT_TYPE};enumMode{CITY,INPUT_TYPE};此时虽然是不同的枚举类型,......
  • C++分解质因数代码实现
    一、问题描述:什么叫做分解质因数?就是我们给定一个数字,把这个数字的是质数的因子按照从小到大的顺序排列出来,并输出每个质因子的个数。二、实现思路:就是我们从1~n/i这个范围内(i*i=n),如果找到了一个因子,使得n%i==0,那么我们就进一步除下去,直到无法满足n%i==0为止。这个时候,i一定......
  • 深入理解C++继承(一)
    一、继承的概念及定义1.1继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复......
  • C++ 返回函数指针的函数
    目录0前言1FunctionPointerinC/C++type1.1ordinaryfunctionPointer1.2non-staticmemberfunctionofclass1.3LambdaToFunctionPointer1.4总结什么是指针2ReturningafunctionpointerfromafunctioninC/C++3.C-VariableArguments(Variablelengtharg......