"Semantic issue: Implicitly declaring library function 'malloc' with type 'void *(unsigned long)'"
"Semantic issue: Implicitly declaring library function 'malloc' with type 'void *(unsigned long)'"
我有一段代码,我试图在括号内获取一个表达式,然后使用它。在下面代码开始的地方,我正在遍历一个字符数组,pcc
是指向当前字符的指针,它已被确定为 '('
。我的目标是将附加表达式放入字符数组 pe
.
int nnrp = 1; /* Net number of right parantheses */
char * pbpe = pcc; /* Pointer to the beginning paranthetical expression */
for (++pcc; *pcc!= '[=11=]' && nnrp != 0; ++pcc)
{
if (*pcc == '(')
{
++nnrp;
}
else if (*pcc == ')')
{
--nnrp;
}
else if (*pcc == '[=11=]')
{
sprintf(err, "Unbalanced paranthesis");
return -1;
}
}
/* If we're here, *pcc is the closing paranathesis of *pbpe */
long nel = pcc - pbpe; /* New expression length */
if (nel == 1)
{
sprintf(err, "Empty parenthesis");
return -1;
}
char * pe = (char*)malloc(nel+1); /* Paranthetical expression */
strncpy(pcc+1, pcc, nel);
pe[nel] = '[=11=]';
但是我的 IDE (XCode 6.0) 给我警告
"Semantic issue: Implicitly declaring library function 'malloc' with type 'void *(unsigned long)'"
在 strncpy(pcc+1, pcc, nel);
行。我想知道
- 为什么我会收到此警告。
- 是否需要修复
- 如果有任何其他问题,您可以在我的代码中看到。
提前致谢。
尝试将此行添加到文件的顶部:
#include <stdlib.h>
这将引入 malloc
的显式声明,因此您不应收到该警告。
您收到警告可能是因为您忘记在文件中包含 stdlib.h。编译器对你很好,给了你一个 malloc
的隐式声明,这样代码就可以编译了。通常,最好包含显式声明,这样编译器才能真正知道您要调用的函数类型,并且修复所有可能的警告也很好,这样您的构建过程就会很干净,您可以注意到更重要的警告。所以是的,你应该修复它。
我有一段代码,我试图在括号内获取一个表达式,然后使用它。在下面代码开始的地方,我正在遍历一个字符数组,pcc
是指向当前字符的指针,它已被确定为 '('
。我的目标是将附加表达式放入字符数组 pe
.
int nnrp = 1; /* Net number of right parantheses */
char * pbpe = pcc; /* Pointer to the beginning paranthetical expression */
for (++pcc; *pcc!= '[=11=]' && nnrp != 0; ++pcc)
{
if (*pcc == '(')
{
++nnrp;
}
else if (*pcc == ')')
{
--nnrp;
}
else if (*pcc == '[=11=]')
{
sprintf(err, "Unbalanced paranthesis");
return -1;
}
}
/* If we're here, *pcc is the closing paranathesis of *pbpe */
long nel = pcc - pbpe; /* New expression length */
if (nel == 1)
{
sprintf(err, "Empty parenthesis");
return -1;
}
char * pe = (char*)malloc(nel+1); /* Paranthetical expression */
strncpy(pcc+1, pcc, nel);
pe[nel] = '[=11=]';
但是我的 IDE (XCode 6.0) 给我警告
"Semantic issue: Implicitly declaring library function 'malloc' with type 'void *(unsigned long)'"
在 strncpy(pcc+1, pcc, nel);
行。我想知道
- 为什么我会收到此警告。
- 是否需要修复
- 如果有任何其他问题,您可以在我的代码中看到。
提前致谢。
尝试将此行添加到文件的顶部:
#include <stdlib.h>
这将引入 malloc
的显式声明,因此您不应收到该警告。
您收到警告可能是因为您忘记在文件中包含 stdlib.h。编译器对你很好,给了你一个 malloc
的隐式声明,这样代码就可以编译了。通常,最好包含显式声明,这样编译器才能真正知道您要调用的函数类型,并且修复所有可能的警告也很好,这样您的构建过程就会很干净,您可以注意到更重要的警告。所以是的,你应该修复它。