[英]Forward-declaring an extern struct
在我开始之前:
我有一个头breakpoints.h
声明:
typedef struct BreakpointInfo BreakpointInfo;
/*
* Iterate all breakpoints known to the Breakpoints service,
* including breakpoints that are created by other (remote) clients.
*/
typedef void IterateBreakpointsCallBack(BreakpointInfo *, void *);
extern void iterate_breakpoints(IterateBreakpointsCallBack * callback, void * args);
以及一个相应的breakpoints.c
,它定义了:
struct BreakpointInfo {
Context * ctx;
LINK link_all;
/*
* A lot of members ..
*/
LINK link_hit_count;
};
现在,我想在另一个文件context.c
使用此功能:
#include <tcf/services/breakpoints.h> // The header file
extern BreakpointInfo;
//extern struct BreakpointInfo; // Also did not work
void MyIterateBreakpointsCallBack(/* struct */ BreakpointInfo *bpInfo, void *args)
{
bpInfo->file;
}
void thread_function()
{
// ..
iterate_breakpoints(&MyIterateBreakpointsCallBack, 0);
// ..
}
但是Intelli-Sense告诉我:
BreakpointInfo *bpInfo, Error: pointer to incomplete class type is not allowed.
所以问题是:
BreakpointInfo
的定义移入头文件的情况下,是否有可能? 我不想更改它,因为它是一个非常复杂的程序,并且我不想通过这样做来破坏其设计。
可能我使用的方式有误,但是如果我无法访问BreakpointInfo
为什么为什么会有ba iterate_breakpoints()
函数可供我使用?
我希望我的要求很清楚。 如果您需要任何帮助,请告诉我。
最好的祝福。
我认为这是不可能的,因为您正在MyIterateBreakpointsCallBack
尝试访问该类型的成员,并且这时需要一个完整的类型。
我对您要使用的项目不熟悉,但是谷歌的快速搜索提示我它是tcf.agent项目。 如果是这样,快速浏览一下breakpoints.h文件后,我注意到有一个get_breakpoint_attribute()
可以为您提供名称/值对的列表。 也许应该为您提供实现MyIterateBreakpointsCallBack()
所需的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.