警告:声明'lr_searchReplace';与vuser_init.c(941)中以前的声明不匹配
我收到以下警告: 警告:“lr_searchReplace”的声明与vuser_init.c(941)中以前的声明不匹配 代码如下:- 注意:我已经声明了警告:声明'lr_searchReplace';与vuser_init.c(941)中以前的声明不匹配,c,loadrunner,vugen,C,Loadrunner,Vugen,我收到以下警告: 警告:“lr_searchReplace”的声明与vuser_init.c(941)中以前的声明不匹配 代码如下:- 注意:我已经声明了char*abc在全局中 vuser_init() { abc = lr_eval_string("{c_Topic1Name}"); lr_searchReplace(abc,"c_newtopic1name",'_','-'); lr_output_message("New string is :- %s",lr_
char*abc代码>在全局中
vuser_init()
{
abc = lr_eval_string("{c_Topic1Name}");
lr_searchReplace(abc,"c_newtopic1name",'_','-');
lr_output_message("New string is :- %s",lr_eval_string("{c_newtopic1name}"));
return(0);
}
void lr_searchReplace(char* inputStr, char* outputStr, char lookupChar, char repChar)
{
char *ptr =inputStr;
char xchar;
int len=0;
int i=0;
lr_output_message("%s",inputStr);
xchar = *ptr;//Copy initial
len=strlen(inputStr);
while (len>0)
{
len--;
xchar = *ptr;
if(xchar==lookupChar)
{
inputStr[i]= repChar;
}
ptr++;
i++;
}
lr_save_string(inputStr,outputStr);
lr_output_message("%s",inputStr);
}
lr_searchReplace(abc,“c_newtopic1名称”、“uu”和“-”)
void lr_searchReplace(char*inputStr,char*outputStr,char lookupChar,char repChar
您正在向outputstr传递常量指针。在提供函数声明之前,您可能正在调用lr\u searchReplace()
。在旧版本的C标准(C89)中,这是允许的,并且函数将被隐式声明为:
int lr_searchReplace();
也就是说,一个函数接受未知数量的非可变参数,并返回int
。这显然与后面的实际声明相矛盾
在较新版本的标准(C99/C11)中,如果试图调用尚未声明的函数,编译器需要生成诊断消息
您应该更改代码,使函数定义出现在函数调用之前,或在函数调用之前提供函数声明。例如:
/* Declaration - Note semi-colon at the end of the declaration */
void lr_searchReplace(char* inputStr, char* outputStr, char lookupChar, char repChar);
/* Function call */
vuser_init()
{
lr_searchReplace(abc,"c_newtopic1name",'_','-');
}
/* Function definition - including function body */
void lr_searchReplace(char* inputStr, char* outputStr, char lookupChar, char repChar)
{
...
}
声明应该在使用之前出现。虽然允许字符串文本驻留在只读内存中,但其类型是char
数组,而不是const char
。