Error with definition of #define

You CAN use your existing definition of TIMEOUT_CHECK but you have to use it as a statement. You can't put a statement in an expression. You could use it this way:

#define TIMEOUT_CHECK { if (millis() - timeout_start > timeout_ms) return ERROR_TIMEOUT; }

while (!Serial.available()) {
    TIMEOUT_CHECK
    delay(1);
  }