typedef 用法

jasper3000 2011-11-30 11:36:39
下面这个语句如果要改成C++实现方式的话需要怎么改动呢?

typedef void (zbar_image_data_handler_t)(zbar_image_t *image,
const void *userdata);
...全文
250 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2011-12-02
  • 打赏
  • 举报
回复
typedef void (zbar_image_data_handler_t)(zbar_image_t *image,const void *userdata);
zbar_image_data_handler_t *ptr;
sdl2005lyx 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xingfeng2510 的回复:]

函数指针的定义:
typedef void (* zbar_image_data_handler_t)(zbar_image_t*, const void*);
定义指针变量时:zbar_image_data_handler_t zidht;
[/Quote]

OK了。。。
FrankHB1989 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pochioly 的回复:]

其实楼主的定义可以是没问题的 不要想当然觉得是函数指针定义 可以就是函数定义 期待楼主给个上下文


//g++ 4.6.1
typedef int (rdwr)(const char*, ...);

extern "C" rdwr printf, scanf;

int main(){
int a;
scanf("%d", &a);……
[/Quote]
LZ的代码是没错,但是你说错了。函数类型typedef可以用于函数声明或作为模版类型参数,但不能用于定义一个函数。
LZ的说法倒是有错误。typedef定义在C语言中是声明(也是定义),不是语句;在C++中称为typedef声明(不是定义),但声明是语句。
函数类型的typedef可以在C++中可以直接用。
如果要声明函数指针类型而不是函数类型看1L。

sanae 2011-12-02
  • 打赏
  • 举报
回复
其实楼主的定义可以是没问题的 不要想当然觉得是函数指针定义 可以就是函数定义 期待楼主给个上下文


//g++ 4.6.1
typedef int (rdwr)(const char*, ...);

extern "C" rdwr printf, scanf;

int main(){
int a;
scanf("%d", &a);
printf("Hello %d\n", a);
}
sanae 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 frankhb1989 的回复:]

引用 8 楼 pochioly 的回复:

其实楼主的定义可以是没问题的 不要想当然觉得是函数指针定义 可以就是函数定义 期待楼主给个上下文


//g++ 4.6.1
typedef int (rdwr)(const char*, ...);

extern "C" rdwr printf, scanf;

int main(){
int a;
scanf("%d", ……
[/Quote]

哦,是的,俺有时候没太区分“声明”和“定义”,一下就被发现了,很感谢的,这里的概念我真的分清楚差点误人子弟了
天云 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 jasper3000 的回复:]
下面这个语句如果要改成C++实现方式的话需要怎么改动呢?

typedef void (zbar_image_data_handler_t)(zbar_image_t *image,
const void *userdata);
[/Quote]

没太明白楼主意思,啥叫改成用C++实现方式?
但是这个定义貌似有点问题 typedef void (*zbar_image_data_handler_t)(zbar_image_t *image,
const void *userdata);
bobye1230 2011-12-01
  • 打赏
  • 举报
回复
杨雪是谁啊、

[Quote=引用 3 楼 thegreatone 的回复:]

引用 1 楼 xingfeng2510 的回复:
函数指针的定义:
typedef void (* zbar_image_data_handler_t)(zbar_image_t*, const void*);
定义指针变量时:zbar_image_data_handler_t zidht;
++
兄弟也喜欢杨雪!
[/Quote]
thegreatone 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xingfeng2510 的回复:]
函数指针的定义:
typedef void (* zbar_image_data_handler_t)(zbar_image_t*, const void*);
定义指针变量时:zbar_image_data_handler_t zidht;
[/Quote]++
兄弟也喜欢杨雪!
duke56 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jasper3000 的回复:]

typedef 不是C语言中的内容么
[/Quote]

typedef是C语言里边的内容的呀

功能是让你重新命名一个已知变量等...
jasper3000 2011-12-01
  • 打赏
  • 举报
回复
typedef 不是C语言中的内容么
qscool1987 2011-12-01
  • 打赏
  • 举报
回复
看一楼的把,你的形式有错误
xingfeng2510 2011-11-30
  • 打赏
  • 举报
回复
函数指针的定义:
typedef void (* zbar_image_data_handler_t)(zbar_image_t*, const void*);
定义指针变量时:zbar_image_data_handler_t zidht;

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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