Re: What is the adventage of macros against function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 27, 2011 at 02:16:08PM +0530, Ramya Desai wrote:
> 2011/4/27 Äsmail Baydan <ibaydan@xxxxxxxxx>:
> > Currently I am trying to learn linux kernel while looking around I saw that
> > a lot of function likes macros are defined.What is the adventage of macros
> > over functions.
> If the size of the function is very small, then the macro is better
> when compared to function. The macros are replaced at the time of
> preprocessing. However, if there is a function, then there may be
> overhead in calling the function. When there is a call, the return
> address needs to be stored on the stack. This makes some overhead. So,
> if the size of a fucction is big, then define it as function otherwise
> make it as a macro.

That's why GCC (and probably other compilers, too) has the the inline
keyword.

One important use case of macros is when the needed functionality cannot
be implemented in a function. include/linux/kernel.h offers some good
examples (e.g. ARRAY_SIZE, container_of, swap).

Hope this helps,
	Jonathan NeuschÃfer

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux