69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
int main(int j) {
printf(" %d /n " , j);
(&main + (&exit - &main)*(j/1000 ))(j+1 );
//上面这句编译出现:
//error: invalid operands of types 'void (*)(int)' and 'int (*)(int)' to binary 'operator-'
//(&main + ((int *)&exit - (int *)&main)*(j/1000 ))(j+1 );
//换成这句编译就能通过了,但是运行最后程序不是正常结束
//(&main + (int (*)(int))&exit - &main)*(j/1000 ))(j+1 );
//上面这句我想强制转换下函数指针类型,编译也通不过,请问是哪里有问题
return 0;
}
#include <stdio.h>
#include <stdlib.h>
typedef int (*func_t)(int);
int main(int j) {
printf(" %d /n " , j);
//(&main + (&exit - &main)*(j/1000 ))(j+1 );
//上面这句编译出现:
//error: invalid operands of types 'void (*)(int)' and 'int (*)(int)' to binary 'operator-'
//(&main + ((int *)&exit - (int *)&main)*(j/1000 ))(j+1 );
((func_t)((long)&main + ((long)&exit - (long)&main) * (j/1000)))(j+1);
//换成这句编译就能通过了,但是运行最后程序不是正常结束
//(&main + (int (*)(int))&exit - &main)*(j/1000 ))(j+1 );
//上面这句我想强制转换下函数指针类型,编译也通不过,请问是哪里有问题
return 0;
}