C 我能';我不理解这个代码结构。有人能解释一下如何执行这段代码吗?

C 我能';我不理解这个代码结构。有人能解释一下如何执行这段代码吗?,c,C,在mediastreamer2中,我看到了很多我不理解的奇怪代码 static MSFilterMethod sender_methods[] = { {MS_RTP_SEND_MUTE, sender_mute}, {MS_RTP_SEND_UNMUTE, sender_unmute}, {MS_RTP_SEND_SET_SESSION, sender_set_session}, {MS_RTP_SEND_SEND_DTMF, sender_send_dtmf}, {MS_RTP_S

在mediastreamer2中,我看到了很多我不理解的奇怪代码

static MSFilterMethod sender_methods[] = {

{MS_RTP_SEND_MUTE, sender_mute},

{MS_RTP_SEND_UNMUTE, sender_unmute},

{MS_RTP_SEND_SET_SESSION, sender_set_session},

{MS_RTP_SEND_SEND_DTMF, sender_send_dtmf},

{MS_RTP_SEND_SET_RELAY_SESSION_ID, sender_set_relay_session_id},

{MS_FILTER_GET_SAMPLE_RATE, sender_get_sr },

{MS_FILTER_GET_NCHANNELS, sender_get_ch },

{MS_RTP_SEND_SET_DTMF_DURATION, sender_set_dtmf_duration },

{MS_RTP_SEND_SEND_GENERIC_CN, sender_send_generic_cn },

{0, NULL}

};
还有这个

MSFilterDesc ms_rtp_send_desc = {

MS_RTP_SEND_ID,

"MSRtpSend",

N_("RTP output filter"),

MS_FILTER_OTHER,

NULL,

1,

0,

sender_init,

NULL,

sender_process,

NULL,

sender_uninit,

sender_methods,

MS_FILTER_IS_PUMP
};

在sender_方法中,那些“sender_”是同一文件中的函数。我不知道如何调用其他函数。因为我看不到这些函数出现在其他文件中

整个项目都在Github中:


谢谢。

.init=sender\u init
为例:这将初始化
MSFilterDesc
结构的
init
结构成员,使其指向
sender\u init
函数的指针。要知道的两件事是和


对于其他的,第一个是结构数组的简单初始化。第二个是结构的简单初始化。

它们是在某个.h文件中定义的?无论如何,github链接对未来的SO用户没有用处:(…很多时候,通过在结构中查找#define然后调用相应的函数来调用它们?实际上,这是#define in.h文件。#define MS#u FILTER_DESC u EXPORT(DESC)MS#u FILTER_DESC u EXPORT(MS#rtp#u send#DESC)谢谢,这意味着,当此结构初始化时,结构中的所有函数都将被调用?@Sven否,函数调用类似于
sender\u init()
。它只是获取一个指向函数的指针。然后,您可以将结构成员用作函数。同样,请阅读有关函数指针的内容。
MSFilterDesc ms_rtp_send_desc = {

.id = MS_RTP_SEND_ID,

.name = "MSRtpSend",

.text = N_("RTP output filter"),

.category = MS_FILTER_OTHER,

.ninputs = 1,

.noutputs = 0,

.init = sender_init,

.process = sender_process,

.uninit = sender_uninit,

.methods = sender_methods,

.flags=MS_FILTER_IS_PUMP

};