#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void FUC(int);
int main(){
int test=1;
P(test);
FUC *pp=P;
*pp(test);
}
VC下编译出现错误:
Compiling...
src.c
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2275: 'FUC' : illegal use of this type as an expression
E:\CBs\HEXIN\TEST\src\src.c(5) : see declaration of 'FUC'
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2065: 'pp' : undeclared identifier
E:\CBs\HEXIN\TEST\src\src.c(10) : error C2063: 'pp' : not a function
Error executing cl.exe.
TEST.exe - 3 error(s), 0 warning(s)
那位知道是怎么回事,请解答,万分感谢!!!
12 个解决方案
#1
typedef void (*FUC)(int);
#2
后面:
FUC pp=P;
FUC pp=P;
#3
*pp(test);
错了。调函数用指针就可以,pp(test);
错了。调函数用指针就可以,pp(test);
#4
楼上正解
其实就是一个函数指针啊
typedef void (*FUC)(int);
定义了一个函数指针类型
此函数返回值为void, 参数一个是int
函数指针的值其实就是函数的入口地址
FUC pp=P;
其实就是一个函数指针啊
typedef void (*FUC)(int);
定义了一个函数指针类型
此函数返回值为void, 参数一个是int
函数指针的值其实就是函数的入口地址
FUC pp=P;
#5
楼主真的大方耶。。。
#6
不客气,接分拉。
#7
typedef void FUC(int);
定义 了一个函数类型,它象void一样是不能定义变量的.
C中变量的声明前不能用可执行语句。
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void (*FUC)(int);
int main(){
int test=1;
FUC pp=P;
P(test);
*pp(test);
}
定义 了一个函数类型,它象void一样是不能定义变量的.
C中变量的声明前不能用可执行语句。
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void (*FUC)(int);
int main(){
int test=1;
FUC pp=P;
P(test);
*pp(test);
}
#8
我改成这样后
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void FUC(int);
int main(){
int test=1;
P(test);
FUC pp=P;
pp(test);
}
又出现了这样的错误:
--------------------Configuration: TEST - Win32 Debug--------------------
Compiling...
src.c
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2275: 'FUC' : illegal use of this type as an expression
E:\CBs\HEXIN\TEST\src\src.c(5) : see declaration of 'FUC'
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2146: syntax error : missing ';' before identifier 'pp'
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2065: 'pp' : undeclared identifier
E:\CBs\HEXIN\TEST\src\src.c(9) : warning C4047: '=' : 'int ' differs in levels of indirection from 'void (__cdecl *)(int )'
E:\CBs\HEXIN\TEST\src\src.c(10) : error C2063: 'pp' : not a function
Error executing cl.exe.
TEST.exe - 4 error(s), 1 warning(s)
另外,我不可以用函数指针
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void FUC(int);
int main(){
int test=1;
P(test);
FUC pp=P;
pp(test);
}
又出现了这样的错误:
--------------------Configuration: TEST - Win32 Debug--------------------
Compiling...
src.c
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2275: 'FUC' : illegal use of this type as an expression
E:\CBs\HEXIN\TEST\src\src.c(5) : see declaration of 'FUC'
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2146: syntax error : missing ';' before identifier 'pp'
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2065: 'pp' : undeclared identifier
E:\CBs\HEXIN\TEST\src\src.c(9) : warning C4047: '=' : 'int ' differs in levels of indirection from 'void (__cdecl *)(int )'
E:\CBs\HEXIN\TEST\src\src.c(10) : error C2063: 'pp' : not a function
Error executing cl.exe.
TEST.exe - 4 error(s), 1 warning(s)
另外,我不可以用函数指针
#9
函数类型不可以定义变量和作为函数的返回值,这是一定的,没法分配空间
你不可以用函数指针?为什么?
你不可以用函数指针?为什么?
#10
楼主不要这么死脑筋,为什么说:‘我不可以用函数指针’
error C2275: 'FUC' : illegal use of this type as an expression
明白地说:typedef void FUC(int);这样定义不行,
只能typedef void (*FUC)(int);
error C2275: 'FUC' : illegal use of this type as an expression
明白地说:typedef void FUC(int);这样定义不行,
只能typedef void (*FUC)(int);
#11
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void FUC(int);
int main(){
int test=1;
P(test);
FUC *pp=P;
pp(test);
}
或者
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void (*FUC)(int);
int main(){
int test=1;
P(test);
FUC pp=P;
pp(test);
}
void P(int i){printf("%d\n",i);}
typedef void FUC(int);
int main(){
int test=1;
P(test);
FUC *pp=P;
pp(test);
}
或者
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void (*FUC)(int);
int main(){
int test=1;
P(test);
FUC pp=P;
pp(test);
}
#12
提醒楼主
变量声明必须放在程序块(函数或{……})的头部
int main(){
int test=1;
P(test);
FUC pp=P; /* 在程序中间定义函数指针,将编译出错 */
pp(test);
}
变量声明必须放在程序块(函数或{……})的头部
int main(){
int test=1;
P(test);
FUC pp=P; /* 在程序中间定义函数指针,将编译出错 */
pp(test);
}
#1
typedef void (*FUC)(int);
#2
后面:
FUC pp=P;
FUC pp=P;
#3
*pp(test);
错了。调函数用指针就可以,pp(test);
错了。调函数用指针就可以,pp(test);
#4
楼上正解
其实就是一个函数指针啊
typedef void (*FUC)(int);
定义了一个函数指针类型
此函数返回值为void, 参数一个是int
函数指针的值其实就是函数的入口地址
FUC pp=P;
其实就是一个函数指针啊
typedef void (*FUC)(int);
定义了一个函数指针类型
此函数返回值为void, 参数一个是int
函数指针的值其实就是函数的入口地址
FUC pp=P;
#5
楼主真的大方耶。。。
#6
不客气,接分拉。
#7
typedef void FUC(int);
定义 了一个函数类型,它象void一样是不能定义变量的.
C中变量的声明前不能用可执行语句。
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void (*FUC)(int);
int main(){
int test=1;
FUC pp=P;
P(test);
*pp(test);
}
定义 了一个函数类型,它象void一样是不能定义变量的.
C中变量的声明前不能用可执行语句。
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void (*FUC)(int);
int main(){
int test=1;
FUC pp=P;
P(test);
*pp(test);
}
#8
我改成这样后
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void FUC(int);
int main(){
int test=1;
P(test);
FUC pp=P;
pp(test);
}
又出现了这样的错误:
--------------------Configuration: TEST - Win32 Debug--------------------
Compiling...
src.c
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2275: 'FUC' : illegal use of this type as an expression
E:\CBs\HEXIN\TEST\src\src.c(5) : see declaration of 'FUC'
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2146: syntax error : missing ';' before identifier 'pp'
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2065: 'pp' : undeclared identifier
E:\CBs\HEXIN\TEST\src\src.c(9) : warning C4047: '=' : 'int ' differs in levels of indirection from 'void (__cdecl *)(int )'
E:\CBs\HEXIN\TEST\src\src.c(10) : error C2063: 'pp' : not a function
Error executing cl.exe.
TEST.exe - 4 error(s), 1 warning(s)
另外,我不可以用函数指针
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void FUC(int);
int main(){
int test=1;
P(test);
FUC pp=P;
pp(test);
}
又出现了这样的错误:
--------------------Configuration: TEST - Win32 Debug--------------------
Compiling...
src.c
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2275: 'FUC' : illegal use of this type as an expression
E:\CBs\HEXIN\TEST\src\src.c(5) : see declaration of 'FUC'
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2146: syntax error : missing ';' before identifier 'pp'
E:\CBs\HEXIN\TEST\src\src.c(9) : error C2065: 'pp' : undeclared identifier
E:\CBs\HEXIN\TEST\src\src.c(9) : warning C4047: '=' : 'int ' differs in levels of indirection from 'void (__cdecl *)(int )'
E:\CBs\HEXIN\TEST\src\src.c(10) : error C2063: 'pp' : not a function
Error executing cl.exe.
TEST.exe - 4 error(s), 1 warning(s)
另外,我不可以用函数指针
#9
函数类型不可以定义变量和作为函数的返回值,这是一定的,没法分配空间
你不可以用函数指针?为什么?
你不可以用函数指针?为什么?
#10
楼主不要这么死脑筋,为什么说:‘我不可以用函数指针’
error C2275: 'FUC' : illegal use of this type as an expression
明白地说:typedef void FUC(int);这样定义不行,
只能typedef void (*FUC)(int);
error C2275: 'FUC' : illegal use of this type as an expression
明白地说:typedef void FUC(int);这样定义不行,
只能typedef void (*FUC)(int);
#11
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void FUC(int);
int main(){
int test=1;
P(test);
FUC *pp=P;
pp(test);
}
或者
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void (*FUC)(int);
int main(){
int test=1;
P(test);
FUC pp=P;
pp(test);
}
void P(int i){printf("%d\n",i);}
typedef void FUC(int);
int main(){
int test=1;
P(test);
FUC *pp=P;
pp(test);
}
或者
#include<stdio.h>
void P(int i){printf("%d\n",i);}
typedef void (*FUC)(int);
int main(){
int test=1;
P(test);
FUC pp=P;
pp(test);
}
#12
提醒楼主
变量声明必须放在程序块(函数或{……})的头部
int main(){
int test=1;
P(test);
FUC pp=P; /* 在程序中间定义函数指针,将编译出错 */
pp(test);
}
变量声明必须放在程序块(函数或{……})的头部
int main(){
int test=1;
P(test);
FUC pp=P; /* 在程序中间定义函数指针,将编译出错 */
pp(test);
}