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 <ahmedsoliman0x666@gmail.com> 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
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@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