Declarations explain to the compiler that a program element or name exists; definitions specify to the compiler what code or data the name describes. A name must be declared before it can be used.