You can try casting your array to pointer to long long and then check value under it. The problem is it's only 6*8 = 48 bit, but you can just use bitmask to remove extra bytes.
ADDRESS1 == (*((long long*)MAC) & 0xFFFFFFFFFFFF)
Full sample: https://ideone.com/kFc8h0
#define ADDRESS1 0xD445556BD557
#define ADDRESS2 0xED612BDF113B
static const uint8_t ADDRESS[6] = { 0x57, 0xD5, 0x6B, 0x55, 0x45, 0xD4 };
int main()
{
if (ADDRESS1 == (*((long long*)ADDRESS) & 0xFFFFFFFFFFFF)) {
std::cout << "ADDRESS1\n";
}
if (ADDRESS2 == (*((long long*)ADDRESS) & 0xFFFFFFFFFFFF)) {
std::cout << "ADDRESS2\n";
}
}
Note, that in sample I had to inverse bytes in ADDRESS array to to match the mask in ADDRESS1.