警告:'lr_searchReplace'的声明与vuser_init.c上的先前声明不匹配(941)

时间:2014-11-07 07:00:42

标签: 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_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);
} 

2 个答案:

答案 0 :(得分:0)

lr_searchReplace(ABC “c_newtopic1name”, '_', ' - ');

void lr_searchReplace(char * inputStr,char * outputStr,char lookupChar,char repChar

您正在将一个const指针传递给outputstr。

答案 1 :(得分:0)

在提供函数声明之前,您可能正在调用lr_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)
{
  ...
}