Como comparar ponteiros C?
Recentemente, escrevi um código para comparar ponteiros como este:
if(p1+len < p2)
no entanto, alguns funcionários disseram que eu deveria escrever assim:
if(p2-p1 > len)
estar seguro. Aqui,p1 ep2 estáchar *
ponteiroslen é um inteiro. Eu não tenho ideia sobre isso.
EDIT1: claro,p1 ep2 ponteiro para o mesmo objeto de memória em implorando.
EDIT2: apenas um minuto atrás, eu encontrei obogo desta questão no meu código (cerca de 3K linhas), porquelen
é tão grande quep1+len
não pode armazenar em 4 bytes de ponteiro, entãop1 + len <p2 éverdadeMas não deveria de fato, então acho que devemos comparar ponteiros como esse emalguma situação:
if(p2 < p1 || (uint32_t)p2-p1 > (uint32_t)len)