1.I see in some classes, there are

#ifndef IPADD_H
#define IPADD_H
#endif

What is that #xxx for ?
2.I also see

#define something somethingelse-somethingelse-somethingelse-somethingelse-somethingelse-somethingelse-somethingelse-somethingelse-somethingelse-somethingelse-somethingelse-somethingelse-somethingelse-somethingelse-somethingelse...........
Very long, the whole screen
WHy should they define something like that ? When should we do so ?

Thank you

--Sunny Smile