指向函数的常量指针数组
Array of constant pointers to functions
我想创建一个指向函数的常量指针数组。
像这样:
#include <stdio.h>
#include <stdlib.h>
int f( int x);
int g( int x );
const int ( *pf[ ] )( int x ) = { f, g };
int main(void)
{
int i, x = 4, nf = 2;
for( i = 0; i < nf; i++ )
printf( "pf[ %d ]( %d ) = %d \n", i, x, pf[ i ]( x ) );
return EXIT_SUCCESS;
}
int f( int x )
{
return x;
}
int g( int x )
{
return 2*x;
}
当它在没有 -Werror 标志的情况下编译时它工作 "fine",但否则我得到:
Building file: ../src/probando.c
Invoking: GCC C Compiler
gcc -O0 -g3 -pedantic -pedantic-errors -Wall -Wextra -Werror -Wconversion -c -fmessage-length=0 -MMD -MP -MF"src/probando.d" -MT"src/probando.d" -o "src/probando.o" "../src/probando.c"
../src/probando.c:17:14: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]
../src/probando.c:17:1: error: initialization from incompatible pointer type
../src/probando.c:17:1: error: (near initialization for ‘pf[0]’)
../src/probando.c:18:1: error: initialization from incompatible pointer type
../src/probando.c:18:1: error: (near initialization for ‘pf[1]’)
cc1: all warnings being treated as errors
make: *** [src/probando.o] Error 1
提前致谢。
const
放错地方了。就目前而言,这些功能应该 return const int
(这毫无意义)。你想要的是:
int (*const x[])(int)
这样读:"const pointers to function" 数组。
我想创建一个指向函数的常量指针数组。 像这样:
#include <stdio.h>
#include <stdlib.h>
int f( int x);
int g( int x );
const int ( *pf[ ] )( int x ) = { f, g };
int main(void)
{
int i, x = 4, nf = 2;
for( i = 0; i < nf; i++ )
printf( "pf[ %d ]( %d ) = %d \n", i, x, pf[ i ]( x ) );
return EXIT_SUCCESS;
}
int f( int x )
{
return x;
}
int g( int x )
{
return 2*x;
}
当它在没有 -Werror 标志的情况下编译时它工作 "fine",但否则我得到:
Building file: ../src/probando.c
Invoking: GCC C Compiler
gcc -O0 -g3 -pedantic -pedantic-errors -Wall -Wextra -Werror -Wconversion -c -fmessage-length=0 -MMD -MP -MF"src/probando.d" -MT"src/probando.d" -o "src/probando.o" "../src/probando.c"
../src/probando.c:17:14: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]
../src/probando.c:17:1: error: initialization from incompatible pointer type
../src/probando.c:17:1: error: (near initialization for ‘pf[0]’)
../src/probando.c:18:1: error: initialization from incompatible pointer type
../src/probando.c:18:1: error: (near initialization for ‘pf[1]’)
cc1: all warnings being treated as errors
make: *** [src/probando.o] Error 1
提前致谢。
const
放错地方了。就目前而言,这些功能应该 return const int
(这毫无意义)。你想要的是:
int (*const x[])(int)
这样读:"const pointers to function" 数组。