我正在用SW4STM32开发stm32。 当我尝试使用arm-none-eabi \ include \ regex.h时,我包含并进行了编译。 然后我得到了一个奇怪的东西。 regex.h定义了各种常量,例如
#define REG_NOMATCH 1
#define REG_BADPAT 2
#define REG_ECOLLATE 3
#define REG_ECTYPE 4
和各种结构
typedef struct {
int re_magic;
size_t re_nsub; /* number of parenthesized subexpressions */
__const char *re_endp; /* end pointer for REG_PEND */
struct re_guts *re_g; /* none of your business :-) */
} regex_t;
和一些功能,包括
int regcomp(regex_t *__restrict, const char *__restrict, int);
size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
int regexec(const regex_t *__restrict, const char *__restrict,
size_t, regmatch_t [__restrict], int);
void regfree(regex_t *);
以下是我的代码
u8 Is_REG_Match(char* reg,char* s){
u8 z=0;
u8 z1=0;
regex_t reg_temp;
z=regcomp(®_temp,reg,0);
regcomp(®_temp, reg , 0);
if(z==0){
z1=regexec(®_temp,s,0,NULL,0);
regfree(®_temp);
return z1;
}
else
return 200;
}
当我编译时,reg_temp很好,但是函数regcomp,regexec和regfree是错误的-未定义对'regcomp'的引用,等等。
regex.h肯定已编译,因为我尝试删除regex.h和
中的struct regex_t的定义regex_t reg_temp;
成为错误。
似乎regex.h未完全编译,只是缺少了功能部分。 我该如何解决?
答案 0 :(得分:1)
您需要链接正则表达式库。
对于 gcc,mingW: 将 -lregex 添加到 makefile,然后将链接到 libsystre-0.so
如果你想要静态链接,添加 -Wl,-Bstatic -lregex -ltre -lintl -liconv 到 makefile。