"Near initialization for..." 在函数指针数组中
"Near initialization for..." in array of function pointers
我总是做以下事情,我不知道为什么,但它开始给我警告。
我在做:
float (*normalyze_type[5])(void) = {trap, trap, trap, filter, trap};
在 .c 文件的顶部,以便它成为一个全局指针数组。
出于某种原因,gcc 向我发出以下警告:
(near initialization for ‘normalize_type[0]’) [enabled by default] normalize.c ... line 13 C/C++ Problem
(near initialization for ‘normalize_type[1]’) [enabled by default] normalize.c ... line 13 C/C++ Problem
(near initialization for ‘normalize_type[2]’) [enabled by default] normalize.c ... line 13 C/C++ Problem
(near initialization for ‘normalize_type[3]’) [enabled by default] normalize.c ... line 13 C/C++ Problem
(near initialization for ‘normalize_type[4]’) [enabled by default] normalize.c ... line 13 C/C++ Problem
已经在网上搜索过,没有找到合适的解决办法。
有谁知道我该如何解决这个问题?
编辑:
陷阱代码():
float trap( const Membership *mf, float x )
{
# define p(pIdx) mf->parameters[ pIdx ]
if( x < p(B) )
return ( x - p(A) ) / ( p(B) - p(A) );
if( x > p(C) )
return ( p(D) - x ) / ( p(D) - p(C) );
return 1.0
#undef p
}
过滤器代码():
float filter( const Membership *mf, float x )
{
if( x >= mf->parameters[threshold] )
return x;
return 0.0;
}
变量 normalyze_type
的初始值设定项的元素类型不正确。它们的类型应该是 float (*)(void)
,但它们 实际上 都具有类型 float (*)(const Membership *, float)
.
我总是做以下事情,我不知道为什么,但它开始给我警告。
我在做:
float (*normalyze_type[5])(void) = {trap, trap, trap, filter, trap};
在 .c 文件的顶部,以便它成为一个全局指针数组。
出于某种原因,gcc 向我发出以下警告:
(near initialization for ‘normalize_type[0]’) [enabled by default] normalize.c ... line 13 C/C++ Problem
(near initialization for ‘normalize_type[1]’) [enabled by default] normalize.c ... line 13 C/C++ Problem
(near initialization for ‘normalize_type[2]’) [enabled by default] normalize.c ... line 13 C/C++ Problem
(near initialization for ‘normalize_type[3]’) [enabled by default] normalize.c ... line 13 C/C++ Problem
(near initialization for ‘normalize_type[4]’) [enabled by default] normalize.c ... line 13 C/C++ Problem
已经在网上搜索过,没有找到合适的解决办法。 有谁知道我该如何解决这个问题?
编辑:
陷阱代码():
float trap( const Membership *mf, float x )
{
# define p(pIdx) mf->parameters[ pIdx ]
if( x < p(B) )
return ( x - p(A) ) / ( p(B) - p(A) );
if( x > p(C) )
return ( p(D) - x ) / ( p(D) - p(C) );
return 1.0
#undef p
}
过滤器代码():
float filter( const Membership *mf, float x )
{
if( x >= mf->parameters[threshold] )
return x;
return 0.0;
}
变量 normalyze_type
的初始值设定项的元素类型不正确。它们的类型应该是 float (*)(void)
,但它们 实际上 都具有类型 float (*)(const Membership *, float)
.