g_Str变量是定义的一个全局字符串,它包括使用的全部API函数的名称,以及程序使用的全部字符串。该变量位于文件strings.h中,通过函数memcpy将它拷贝给变量szStr变量,szStr变量是结构体VARS的一个域。
全局结构体GS中的STR结构体,与g_St中的字符串是一一对应的。因为szStr和g_Str都是串行保存字符串集合的,所以当把szStr拷贝到STR结构体中的时候,使用的函数是LoadStrings。
void * memcpy(void * dest,const void * src,size_t count)
{
void *ret=dest;
while(count--)
{
*(char *)dest=*(char *)src;
dest=(char *)dest+1;
src=(char *)src+1;
}
return (ret);//该返回值不影响结果
}
bool BOAPI FWK_LoadStrings(GS *gs,void *dest,char *src)
{
if(dest==NULL)||src==NULL)
return false;
FCT *fct=&(gs->fct);
DWORD *p=(DWORD *)dest;
while(*src!=0)
{
src+=fct->strlen(src)+1;
p++;
}
return true;
}
unsigned int BOAPI C_strlen(const char *str)
{
const char * eos=str;
while(*eos++);
return((int)(eos-str+1));
}