我正在尝试确定字符串中的每个字符是否都是字母数字。我的编译器没有 isalnum 函数。
我的函数在下面,my_struct 有一个大小为 6 (uint8 bom_pn[6]) 的 char 数组 ....是的 uint8 是一个字符。
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 ) );
}
我的宏定义如下:
#define isalphanum(c) ( ( c >= '0' && c <= '9' ) || \
( c >= 'A' && c <= 'Z' ) || \
( c >= 'a' && c <= 'z' ) )
上面抛出错误“操作数类型不兼容(“uint8 *”和“int”)”
如果我将定义更改为以下内容,我的代码将编译并收到警告。
#define isalphanum(c) ( ( (uint8)c >= '0' && (uint8)c <= '9' ) || \
( (uint8)c >= 'A' && (uint8)c <= 'Z' ) || \
( (uint8)c >= 'a' && (uint8)c <= 'z' ) )
警告:“从指针转换为更小的整数”
我的问题是,如何在没有警告的情况下正确创建此定义(并且显然检查正确)。
谢谢