문자열의 모든 문자가 영숫자인지 확인하려고합니다. 내 컴파일러에는 isalnum 함수가 없습니다.isalnum equivalent #define
내 기능이 아래에 있고 my_struct의 크기가 6 (uint8 bom_pn [6]) 인 char 배열이 있습니다. 예, uint8은 char입니다.
boolean myfunc(my_struct * lh)
{
ret = (isalphanum(lh->bom_pn) && isalphanum(lh->bom_pn + 1) &&
isalphanum(lh->bom_pn + 2) && isalphanum(lh->bom_pn + 3) &&
isalphanum(lh->bom_pn + 4) && isalphanum(lh->bom_pn + 5));
}
내 매크로 정의는 다음과 같습니다 : (가) 위의 오류 "(UINT8 *"와 "INT") "
나는 나의 정의를 변경하는 경우 피연산자 유형이 호환되지 않습니다"를 던졌습니다
#define isalphanum(c) ((c >= '0' && c <= '9') || \
(c >= 'A' && c <= 'Z') || \
(c >= 'a' && c <= 'z'))
다음에, 내 코드가 컴파일되고 경고 메시지가 나타납니다.
#define isalphanum(c) (((uint8)c >= '0' && (uint8)c <= '9') || \
((uint8)c >= 'A' && (uint8)c <= 'Z') || \
((uint8)c >= 'a' && (uint8)c <= 'z'))
경고 : 내가 제대로 경고없이이 정의를 작성 (분명히 제대로 확인) 어떻게 "작은 정수 포인터의 변환"
내 질문입니다.
감사
참고 포인터 대는 지적을 넘어, 즉 - 문제를 해결하기 위해 로케일을 전혀 사용하지 않습니다. 왜 당신의 환경에는'ctype.h '이 없습니까? – geekosaur
바아, 나는 단지 반환 (isal .....)을 말하려고했다. – NickG