Inline functions

Aug 31, 2018

We create functions for the same sort of operations to be performed in different locations of the program. This mechanism reduces the memory space, avoids the repetition or duplication of code. On the other hand, calling a function somewhat increases the overhead to the system. When the function call occurs, the compiler stores the information to return back to the call location and its arguments to the stack, and at the end of the called function it unwinds the stack and returns to the calling location. This kind of mechanism definately overheads the system or compiler for the very short routines.

So, to save the execution time for the small or short functions, and avoiding the duplication mechanism of code as it is, c++ introduces the mechanism that copies the codes of the function in every called location so that the jump overhead is avoided. This type of function whose code is copied in the called location is called inline function. To make a function inline, the inline  keyword is written in front of the function defination.

Syntax:

inline return_type function_name(arg1, arg2, ..... argn){

    //function body

If the function is defined, after its prototype, the prototype is defined as normal function and only the keyword inline  is mentioned in defination.

Inline function is not suitable for the functions with long codes, as it increases the length of the source code due to inline compilation. And it also may increase the use of the memory. So the program that concerns less use of memory with compromisation on small execution speed, inline function is not suitable.

  • Inline function is just the request to the compiler, for larger functions most of the compilers treat them as normal functions.

Example:

//program to find the area of circle
#include
using namespace std;
#define PI 3.1416

//inline function defination
inline float area(float radius){
return PI * radius * radius;
}

int main(){
float r1;
cout<<"Enter radius :"<<endl;
cin>>r1;
cout<<"Area with radius "<<r1<<" = "<<area(r1)<<endl;
cout<<"Enter radius :"<<endl;
cin>>r1;
cout<<"Area with radius "<<r1<<" = "<<area(r1)<<endl;
cout<<"Enter radius :"<<endl;
cin>>r1;
cout<<"Area with radius "<<r1<<" = "<<area(r1)<<endl;
return 0;
}

 

Related


Tools/Apps





© Nepal Exchange Rates