These warning messages come from the pre-processing pass of the compiler. Athough the compiler and pre-processor are integrated into the same executable, it is worth distinguishing the pre-processor warning messages from those generated by the compiler proper.

bad digit 'digit' in number

When evaluating a pre-processor expression the pre-processor encountered a malformed octal, decimal, or hexadecimal number.

bad token 'token' produced by ##

A bad pre-processing token has been produced when using the token pasting operator ##. This error is extremely unlikely to occur in your code.

character constant taken as not signed

Characters with ASCII codes greater than 127 are treated as unsigned numbers by the pre-processor.

end of file inside comment

The pre-processor came to the end of file whilst processing a comment. This is usually an error: comments cannot extend across source files.

multi-byte character constant undefined

Multi-byte character constants are not supported by the pre-processor when evaluating expressions.

no newline at end of file

The last character in the file is not a new line. Although this isn't an error, it may help portability of your code if you include a new line at the end of your file.

syntax error in #if/#endif

There's a general problem in the way you've used the #if or #endif control

unknown pre-processor control 'control'

The pre-prpocessor control #control isn't a valid ANSI pre-processor control. Usually this is caused by a spelling error.

undefined escape '\char' in character constant

When evaluating a pre-processor expression the pre-processor encountered an escape sequence \ char which isn't defined by the ANSI standard.

wide character constant undefined

Wide character constants are not supported by the pre-processor when evaluating expressions.