From mboxrd@z Thu Jan 1 00:00:00 1970 From: navych@126.com (Navy) Date: Tue, 21 Jul 2015 15:01:05 +0800 Subject: what is the use of #ifndefs In-Reply-To: References: Message-ID: <20150721063737.GA4726@debian> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org On Tue, Jul 21, 2015 at 11:04:15AM +0530, Amit Pandey wrote: > Hi Ahmed, > > See the comments inline > #ifndef _LINUX_LIST_H // If not defined _LINUX_LIST_H macro > #define _LINUX_LIST_H // then define this macro > #include "linuxlist.h" // and include linuxlist.h header file > #endif // end of #ifndef > > Now say in another file if u r not sure whether you have already included > the "linuxlist.h" then you will again repeat above lines of code, assuming > you have included it then certainly _LINUX_LIST_H macro has already been > defined, so compiler will not include this file again. See comments below > > #ifndef _LINUX_LIST_H // Since macro _LINUX_LIST_H has already defined > #define _LINUX_LIST_H // compiler will ignore this line > #include "linuxlist.h" // compiler will ignore this line, too. > Hence no multiple inclusion of same header file > #endif > > Please let me know whether I was clear with the explanation. > > Thanks, > Amit > > On Mon, Jul 20, 2015 at 3:33 PM, 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 at kernelnewbies.org > > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies at kernelnewbies.org > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies Your explanation seems to be wrong. The code below should in "linuxlist.h" ,other than in other files which include "linuxlist.h". #ifndef _LINUX_LIST_H #define _LINUX_LIST_H ... #endif