error: invalid operands of types 'void (*)(int)' and 'int (*)(int)' to binary 'o

Mark0904 2012-10-18 11:56:44
#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;
}
...全文
1836 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
arui0616 2013-05-15
  • 打赏
  • 举报
回复
sob,cnm
JiMoKuangXiangQu 2012-10-19
  • 打赏
  • 举报
回复
没深究lz的意图,纯粹是让程序编译通过.

#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;
}
rocktyt 2012-10-19
  • 打赏
  • 举报
回复
算是看明白lz想干什么了,大概是想通过地址递归调用main1000次然后调用exit退出
没研究过,mark
I_ask_who 2012-10-19
  • 打赏
  • 举报
回复
mark,没看懂在干什么
赵4老师 2012-10-19
  • 打赏
  • 举报
回复
用typedef

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧