This is to avoid multiple declarations.In header file you declare the
variables and function names and these have to be declared just once
otherwise you will get multiple declaration error.
#ifndef avoids this error .By placing it at the top all the declaration is
visited just once =>How?Since suppose  _LINUX_LIST_H is not defined and
when you enter the file #ifndef (if not defined) will be true , hence it
will go to next line and define it using  #define _LINUX_LIST_H .Now Since
#defines(Macros) have global scopes across all the files, if suppose in
some other files you have included this file (which defines above macros) ,
it will check first #ifndef _LINUX_LIST_H , but since it has already been
defiend it will not enter the next line and you will be saved from multiple
declaration error.

On Tue, Jul 21, 2015 at 7:54 AM, Navy <nav...@126.com> wrote:

> On Mon, Jul 20, 2015 at 12:03:07PM +0200, Ahmed Soliman wrote:
> > currently I started reading through the linux kernel and I started
> > reading liunx/include/linux/list.h> I understood some of the functions
> > but still I dont know what does these lines of code do
> > #ifndef _LINUX_LIST_H
> > #define _LINUX_LIST_H
> > which exist at the very beginning of the file
> > I also noticed that there is many similar ifndefs in almost any .h
> > file in the kernel
> > note that I understand wnat does ifndef do bu I dont understand what
> > goal is it supposed to achieve at the beginning of the headerfile
> >
> > _______________________________________________
> > Kernelnewbies mailing list
> > Kernelnewbies@kernelnewbies.org
> > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
> The whole structure seems to
> #ifndef ...
> #define ...
> .
> .
> .
> #endif
>
>
>
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies@kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to