Здесь дело не в определении #define, а в месте использования NAK в коде. Возможно, NAK участвует в арифметических операциях или операциях сравнения с типом, отличным от int, например short.
дефайны я по мере необходимости вставляю в QByteArray, как-то так:
QByteArray outData;
outData.resize(0);
outData.append(SOH);
outData.append(QString("P").toLocal8Bit()); // команда пароля
outData.append(QString("1").toLocal8Bit()); // операнд сравнения с внутренним паролем
outData.append(STX);
outData.append(QString("(").toLocal8Bit());
outData.append(pass.toLocal8Bit());
outData.append(QString(")").toLocal8Bit());
outData.append(ETX);
outData.append(GetBCC(outData));
return outData;
Но, если бы дело было в этом, то компилятор ругался на все дефайны, а в моём случае, только на некоторые. Например, из группы:
#define CR 0x0D
#define LF 0x0A
#define SOH 0x01
#define STX 0x02
#define ETX 0x03
#define EOT 0x04
#define ACK 0x06
#define NAK 0x15
он недоволен SOH, STX, ACK и NAK