为什么我的程序出现重定义错误?

sun4216 2003-09-20 01:29:01
typedef int (*pProc)(void);
pProc hello;
int hello(void)
{
printf("Hi!\n");
return 0;
}
...全文
75 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun4216 2003-09-20
  • 打赏
  • 举报
回复
xueweizhong(薛卫忠)的说法是正确的,但是我是想声明一个函数指针变量,函数是在别处定义的,这个函数指针变量我是要传给别的函数。似乎用指针感觉明显一点;虽然xueweizhong(薛卫忠)的方法也可以自动转换成指针。
ttlb 2003-09-20
  • 打赏
  • 举报
回复
两个hello只有返回值不一样,这是重定义错误,改个名字吧。
hcj2002 2003-09-20
  • 打赏
  • 举报
回复
"pProc hello 声明一个变量;
函数int hello(void);定义一个函数,两个用相同的名称,编译器无法识别所用的是那一个,当然是重复定义了。
xueweizhong 2003-09-20
  • 打赏
  • 举报
回复
//看看这个
// #1 是声明, #2是定义。

typedef int Proc();
Proc hello; // -------#1

#include <stdio.h>
int hello() // --------#2
{
printf("Hi!\n");
return 0;
}

int main()
{
hello();
}
sun4216 2003-09-20
  • 打赏
  • 举报
回复
"pProc hello;"这一句我只是想声明一个变量;
函数int hello(void) 是在别处定义的,我为了大家看明白才放在一起的;
lemon520的这一句“pProc ptr=hello;”中的hello还没有声明,怎么能就用呢?
lemon520 2003-09-20
  • 打赏
  • 举报
回复
typedef int (*pProc)(void);
pProc hello; //定义了一个函数指针hello
int hello(void) //定义了一个函数hello,两个hello当然重复了!
{
printf("Hi!\n");
return 0;
}
可以这样定义
typedef int (*pProc)(void);
pProc ptr=hello;
int hello(void)
{
printf("Hi!\n");
return 0;
}

69,371

社区成员

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

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