I am actually comparing the pointer not the value of the pointer. If the pointer is set, that means that size and crc are to be checked too. 0 is the standard value for pCrcSizeMatch in case it is not set. I solved it this way, because there is no "illegal" value for size and crc (both are unsigned), and the function somehow had to know if crc and size are important.