Is the C preprocessor able to perform integer arithmetic?
E.g.:
#define PI 3.1416
#define OP PI/100
#define OP2 PI%100
Is there a way OP and/or OP2 get calculated in the preprocessing phase?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Integer arithmetic? Run the following program to find out:
The answer is "yes". There is a way to make the preprocessor perform integer arithmetic, which is to use it in a
preprocessor condition.Note however that your examples are not integer arithmetic. I just checked, and GCC’s preprocessor fails if you try to make it do
float comparisons. I haven’t checked whether the standard ever allows floating point arithmetic in the preprocessor.Regular macro expansion does not evaluate
integer expressions. It leaves it to the compiler, as can be seen by preprocessing (-E in GCC) the following:The result is
int i = (1 + 1);(plus probably some stuff to indicate source file names and line numbers and such).