For anything being assigned to a pin, it should be a byte, it saves memory even if it is just one byte less. For anything that actually requires more memory usage like an int or long, signed or unsigned, fine, but a regular pin should be a byte.
I'm curious as to what the compiler makes a #define variable.
Short answer: None of the above.
Long answer: #define is a preprocessor directive, the compiler never sees it. #define does not
define a variable. Given
#define identifier replacement
the preprocessor literally replaces each occurrence of identifier
in the source code with replacement
. Think of it as a text-based replacement like might be done with a word processor, e.g. replace every occurrence of foo
. The compiler gets the source code after the replacements occur.
Even longer answer: http://en.wikipedia.org/wiki/C_preprocessor#Macro_definition_and_expansion