@jr_coder Preprocessor JUST replaces the macro-name with the text given in the code. It doesn’t add anything else. it just copies and paste the text at the place of macro-name!
As told by @abhinav92003 it works fine if you use PI as ;
Could you show your whole code, then it will be easier to know the cause of error (if any error occurs)
Writing #define PI 3.14; don’t shows an error if you use it like I did here : http://ideone.com/AyFTDX
But if you add semi-colon after you have ended one statement, then it wont throw any error since just a ; (semi-colon) is a null statement! (Example : http://ideone.com/8znOp5)