Can the following macro bring problems?
#define sq(x) x*x
If yes, then how and why?please help.
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.
Yes, it can present problems. Other than the obvious fact that macros don’t respect namespaces at all (which means you can’t call anything else
sq), try the following:You should surround
x * xwith parenthesis so it becomes((x) * (x)).Another problem:
This is an inherent problem with macros, and is one reason inline functions should be preferred.