这个宏在什么情况下会导致错误?

In which situation does this macro can cause an error?

考虑以下宏

#define SQ(x) ((x) * (x));

在什么情况下使用这个宏会出错?

如果它的参数在评估时有副作用。例如,SQ(i++) 是未定义的行为。