#define

#define is a useful C and C++ feature that allows the programmer to give a name to a constant value before the program is compiled. The compiler will replace references to these constants with the defined value at compile time.

This can have some unwanted side effects. In general, the const keyword is preferred for defining constants.

Syntax

The following line would define the name MY_CONSTANT to have value value:

#define MY_CONSTANT value

Note that the # is necessary. It is usually good style for the name to be capitalized, although this is not required.

There is no semicolon after the #define statement. If you include one, the compiler will likely throw cryptic errors in unrelated places. That is, don’t do this:

// DON'T DO THIS! THE SEMICOLON SHOULDN'T BE THERE!
#define NAME value;

Similarly, including an equal sign after the #define line will also generate a cryptic compiler error further down the page. That is, don’t do this, either:

// DON'T DO THIS, EITHER! THE EQUALS SIGN SHOULDN'T BE THERE!
#define NAME = value

Example

#define LED_PIN 13
// The compiler will replace any mention of LED_PIN with
// the value 3 at compile time.

See Also

License and Attribution

This documentation page was adapted from the Arduino Reference Documentation, which is released under a Creative Commons Attribution-ShareAlike 3.0 License.