A topic has the following code, which is required to indicate the location of the error.

```
#include<iostream>
#define PT 3.5;
#define S(x) PT*x*x

void main() {
    int a = 1, b = 2;
    std::cout << S(a + b);
}

```

I think ";" caused this problem ,and deleted ';' the post compilation test can get the correct results.But the teacher thinks that variables cannot be used in macro definition.
I'm not sure who is right.

I've seen a lot of answers, but what I want to know is not whether it's reasonable to write like this, but what causes the program error in the end.

Add ';' after '#define' Not particularly good, but the compilation can pass. "#define" can also allow variables to appear. So the final error reason is "\* a + b"?