I cann't understand when to use the preprocessor directives as (ifndef, define ,etc.)? In dictionary.h, what is the importance of writing those statements? and regarding the reason that was mentioned in the understanding of the pset, I cann't understand it as well." images are attached"
The header guard in this example isn't strictly necessary, since there's only one header file. As projects get larger, there will be multiple header files, and they will need to cross reference each other. While this tutorial is written about c++ header guards, it applies to c as well.