??? 06/27/05 07:04 Read: times |
#95987 - preprocessor maths Responding to: ???'s previous message |
Michael Karas said:
The IAR Preprocessor is capable of parsing float type data and then converting to integer at the necessary time.
In the case of KEIL the preprocessor is only capable of working in integer (32 bit I believe). The preprocessor has no business doing any maths at all: K&R said:
A preprocessor performs macro substitution, conditional compilation, and inclusion of named files No maths. The preprocessor just generates a text file; the compiler may choose to evaluate any constant expressions at compile-time, or generate code to evaluate the expression at run-time. Keil always evaluates constant expressions at compile-time, and does it using the normal 'C' rules for arithmetic - one of which is that everything is an int unless stated otherwise. Therefore, the expression (12/Xtal) is evaluated as an int - and its int result is zero. Hence, when you divide by it, you get a divide-by-zero error. That explains why you do get the error with Keil, but not why you don't get it with IAR... |