| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 541 人关注过本帖
标题:高手进~~一个C语言程序麻烦高手给解释下谢谢了,这个我研究了3天没看明白
只看楼主 加入收藏
zzg1001
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-9-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
高手进~~一个C语言程序麻烦高手给解释下谢谢了,这个我研究了3天没看明白
#include <gphoto2/gphoto2-abilities-list.h>
#include <gphoto2/gphoto2-camera.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/**
 * \brief Returns a unique id for the camera driver.
 *
 * \param id a #CameraText
 * \return a gphoto2 error code
 *
 **/
typedef int (* CameraLibraryIdFunc)        (CameraText *id);
/**
 * \brief Adds the abilities of the supported models to the supplied list.
 *
 * \param list a #CameraAbilitiesList
 * \return a gphoto2 error code
 *
 **/
typedef int (* CameraLibraryAbilitiesFunc) (CameraAbilitiesList *list);
/**
 * \brief Initializes the camera.
 *
 * \param camera a #Camera
 * \param context a #GPContext
 * \return a gphoto2 error code
 *
 * The camera driver will establish a first connection
 * to the camera and configure the camera variable (i.e. using
 * #gp_filesystem_set_list_funcs or #gp_port_get_settings).
 typedef int (* CameraLibraryInitFunc)      (Camera *camera, GPContext *context);
/**
 * If you want to write a camera library, you need to implement
 * the following three functions. Everything else should be declared
 * as static.
 **/
int camera_id        (CameraText *id);
int camera_abilities     (CameraAbilitiesList *list);
int camera_init     (Camera *camera, GPContext *context);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __GPHOTO2_LIBRARY_H__ */


我想问一下int camera_id        (CameraText *id);这个是不是函数是camera_id   然后他的参数是后面()里面的东西?那个CameraText是数据类型? *id 又代表什么?

typedef int (* CameraLibraryInitFunc)      (Camera *camera, GPContext *context);这一句又是什么意思?我知道typedef int real 是相当于用real可以代替int  那上面那句话是什么意思?又高手能解释下吗?谢谢了
搜索更多相关主题的帖子: 解释 麻烦 C语言 
2009-09-22 20:45
snr108
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:39
专家分:60
注 册:2009-9-14
收藏
得分:20 
看了typedef这个陌生的东东翻了一下百度..理解后拷到下面自己看...


typedef用来声明一个别名,typedef后面的语法,是一个声明。本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人不在少数。罪魁祸首又是那些害人的教材。在这些教材中介绍typedef的时候通常会写出如下形式: typedef int PARA; 这种形式跟#define int PARA几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以偏盖全。的确,这种形式在所有形式中是最简单的,但却没有对 typedef进一步解释,使得不少人用#define的思维来看待typedef,把int与PARA分开来看,int是一部分,PARA是另一部分,但实际上根本就不是这么一回事。int与PARA是一个整体!就象int i:声明一样是一个整体声明,只不过int i定义了一个变量,而typedef定义了一个别名。这些人由于持有这种错误的观念,就会无法理解如下一些声明: typedef int a[10]; typedef void (*p)(void); 他们会以为a[10]是int的别名,(*p)(void)是void的别名,但这样的别名看起来又似乎不是合法的名字,于是陷入困惑之中。实际上,上面的语句把a声明为具有10个int元素的数组的类型别名,p是一种函数指针的类型别名。 虽然在功能上,typedef可以看作一个跟int PARA分离的动作,但语法上typedef属于存储类声明说明符,因此严格来说,typedef int PARA整个是一个完整的声明。定义一个函数指针类型。比如原函数是 void func(void); 那么定义的函数指针类型就是typedef void (*Fun)(void); 然后用此类型生成一个指向函数的指针: Fun func1; 当func1获取函数地址之后,那么你就可以向调用原函数那样来使用这个函数指针: func1(void);  
2009-09-23 08:26
snr108
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:39
专家分:60
注 册:2009-9-14
收藏
得分:0 
而int camera_init     (Camera *camera, GPContext *context);这一句不要把它看复杂了..我分析的就本身是一个声明..函数
int型的camera_init函数,后面的是说明部分..如果理解复杂了就没意思了
2009-09-23 08:30
快速回复:高手进~~一个C语言程序麻烦高手给解释下谢谢了,这个我研究了3天没看明 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019510 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved