# Why is there so many macros in OpenGL?

I would just like to know why are there so many things defined as macros that point to memory addresses in OpenGL?

I see them all over the place. For example when I go to choose parameters for a function such as glDrawArrays(), I have to choose a mode like GL_TRIANGLES as the first parameter which is a macro like all the others.