0
"man"페이지에서 inet_ntop처럼 보이는 것은 NULL
과 비교할 때 괜찮은 문자열 (const char *)을 반환합니다. 하지만, 내 프로그램에서 나는 말한다이 코드 블록의 첫 번째 줄에서 컴파일러 경고를 얻을 :C에서 inet_ntop을 사용할 때 포인터와 정수의 비교
경고 : 포인터와 정수
의 비교.
if(inet_ntop(address->sa_family, numericAddress, addrBuffer, sizeof(addrBuffer)) == NULL)
{
fputs("invalid address", stream);
}
불행하게도 나는 그것이 포인터와있는 것이 정수로 보는 하나로보고 어느 구별 할 수 없습니다 : 올바른 매개 변수가 전달되고 가정이 뭔가 문제가있다. 미리 감사드립니다!
왜 선언되지 않은 함수가 나오지 않습니까? –
@MattVaughan C에서 컴파일러가 선언되지 않은 함수를 발견하면'int'를 리턴한다고 가정합니다. 반환 된 값을 포인터와 비교할 때 ('NULL'은'void *'로 정의됩니다) 경고를받습니다. 물론 정의되지 않은 동작을 일으킬 수있는 함수 인수와의 불일치가있을 수도 있습니다. –
C 언어 (적어도 C89)에는 암시 적 함수 선언 개념이 있습니다. 프로토 타입이없는 함수는 함수 호출에서 첫 번째 사용에서 파생 된 반환 형식 및 arg 목록을 가지며 그 함수가 없으면 int를 반환하고 불특정하지만 고정 된 수의 인수. 컴파일러 옵션에서 -Wimissing-prototypes를 추가 할 수 있습니다. –