함수를 가리키는 포인터가 있습니다.C : 문 안에서 if 문을 선언 할 수 없습니다.
if (mode == 0)
{
const unsigned char *packet = read_serial_packet(src, &len);
} else {
const unsigned char *packet = read_network_packet(fd, &len);
}
코드에서 나중에 포인터를 처음 사용할 때 불편을 둡니다.하지만 컴파일러가 불평하기 때문에이를 수행 할 수 없습니다.
error: 'packet' undeclared (first use in this function)
이것은 이상합니다. if 문 없이도 작동했지만 지금은 다른 소스에서 데이터를 가져올 수있는 프로그램이 필요합니다. 이것을 할 수 있습니까? 나도 그렇게 생각해. 그렇지 않다면 내가 시도하고있는 것을 얻을 수있는 다른 간단한 방법이 있습니까?
고마워요.
한 가지 방법 즉'unsigned char const * packet'은 "const unsigned char에 대한 포인터"로 읽혀집니다. 'unsigned char * const packet'은 "unsigned char에 대한 상수 포인터"로 읽혀집니다. 라인을 거꾸로 읽으면 어떤 유형의 포인터인지 쉽게 기억할 수 있습니다. –
또한 함수에 대한 포인터가 없다는 점에 유의해야합니다. 함수의 반환 값을 저장하는 데 사용되는 문자 포인터가 있습니다. –
저는 C에서 이런 종류의 저수준 포인터를 관리하는 데별로 숙련되어 있지 않습니다. 그래서 나는 더 나은 C 프로그래머가 될 수 있도록 조언을 담당합니다. 감사. –