我收到以下警告:
警告:'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);
}
答案 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)
{
...
}