我以为#1
uint8_t* start_ptr, end_ptr;
Run Code Online (Sandbox Code Playgroud)
和#2
uint8_t* start_ptr;
uint8_t* end_ptr;
Run Code Online (Sandbox Code Playgroud)
一般都是一样的。在我看来,他们不是。有人可以指定第一个除了第二个之外做什么吗?
发生了什么:
if(strncmp(mseq,mseq_a,8) == 0){
start_ptr = MY_UART_RingBuffer_getReadPointer();
start_found = 1;
}
if(strncmp(mseq+3,mseq_z,5) == 0){
end_ptr = MY_UART_RingBuffer_getReadPointer();
if (start_found == 1){
if(!MY_UART_RingBuffer_getOverlap()){
end_ptr = end_ptr - 6;
}
else{
start_found = 0;
continue;
}
ptrdiff_t length = end_ptr - start_ptr;
start_found = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
在使用 #1 时,编译器会给我这个长度计算:
../Core/Src/main.c:143:32: error: invalid operands to binary - (have 'int' and 'uint8_t * {aka unsigned char *}')
ptrdiff_t length = end_ptr - start_ptr; …Run Code Online (Sandbox Code Playgroud)