游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3427|回复: 3

为什么不能在全局范围对函数指针赋值?

[复制链接]

51

主题

134

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2007-12-4 00:38:00 | 显示全部楼层 |阅读模式
。。。。在自己试验的是后一直出错,后来才发现一定要在其他函数内部赋值
>.\fwsfile.cpp(37) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>.\fwsfile.cpp(37) : error C2373: “fptr1”: 重定义;不同的类型修饰符
1>        .\fwsfile.cpp(34) : 参见“fptr1”的声明
1>.\fwsfile.cpp(37) : error C2440: “初始化”: 无法从“void (__cdecl *)(void *)”转换为“int”
1>        没有使该转换得以执行的上下文
1>.\fwsfile.cpp(42) : error C3861: “fptr1”: 找不到标识符

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2007-12-4 10:07:00 | 显示全部楼层

Re:为什么不能在全局范围对函数指针赋值?

  1. #include <iostream>

  2. typedef bool (*pfunc_t)(int);

  3. bool func(int i) {
  4.     std::cout << "I'm func(" << i << ")." << std::endl;
  5.     return (i>=0) ? true : false;
  6. }

  7. pfunc_t pfunc = func;

  8. int main () {
  9.     std::cout << "return " << pfunc(-100) << std::endl;
  10.     std::cout << "return " << pfunc(100) << std::endl;
  11.     return 0;
  12. }
复制代码


g++ test.cpp

I'm func(-100).
return 0
I'm func(100).
return 1

51

主题

134

帖子

140

积分

注册会员

Rank: 2

积分
140
 楼主| 发表于 2007-12-4 12:23:00 | 显示全部楼层

Re:为什么不能在全局范围对函数指针赋值?

原来要用typedef 的方法 感谢楼上!

2

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
QQ
发表于 2007-12-20 09:50:00 | 显示全部楼层

Re:为什么不能在全局范围对函数指针赋值?

建议LZ看一下有关“运行期动态类型定义”的相关知识。你就会更清楚,到底是“为什么”了。不要轻意满足“是什么”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-18 06:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表