C++ 以.(点)为前缀的结构变量名需要解释
这是从中提取的代码。我未能理解以下内容: 1) struct关键字后面是结构名称(obs\u encoder\u info)和标记(opus\u encoder\u info)吗 2) 如何在结构变量前面加上。(点)?它是另一个结构的成员变量吗C++ 以.(点)为前缀的结构变量名需要解释,c++,C++,这是从中提取的代码。我未能理解以下内容: 1) struct关键字后面是结构名称(obs\u encoder\u info)和标记(opus\u encoder\u info)吗 2) 如何在结构变量前面加上。(点)?它是另一个结构的成员变量吗 struct obs_encoder_info opus_encoder_info = { .id = "ffmpeg_opus", .type = OBS_ENCODER_AUDIO, .c
struct obs_encoder_info opus_encoder_info = {
.id = "ffmpeg_opus",
.type = OBS_ENCODER_AUDIO,
.codec = "opus",
.get_name = opus_getname,
.create = opus_create,
.destroy = enc_destroy
};
这是(从C++20开始)
因此,它声明了一个名为opus\u encoder\u info
的对象,其类型为obs\u encoder\u info
,其数据成员id
用值初始化,“ffmpeg\u opus”
,类型
用值obs\u encoder\u AUDIO
初始化,等等。这是(自C++20以来)
因此,它声明了一个名为opus\u encoder\u info
的对象,类型为obs\u encoder\u info
,其数据成员id
用值“ffmpeg\u opus”
初始化,类型
用值obs\u encoder\u AUDIO
初始化,等等
1) struct关键字后面是结构名称(obs\u encoder\u info)和标记(opus\u encoder\u info)吗
差不多。struct
关键字后面是一个结构名称,但后面是一个变量(不是标记)名称。此行声明(并初始化)opus\u encoder\u info
为类型为struct obs\u encoder\u info
的变量。(在C++中,<代码>结构> <代码>关键字不是必需的,但在C中是.< /p>
2) 如何在结构变量前面加上。(点)?它是另一个结构的成员变量吗
struct obs_encoder_info opus_encoder_info = {
.id = "ffmpeg_opus",
.type = OBS_ENCODER_AUDIO,
.codec = "opus",
.get_name = opus_getname,
.create = opus_create,
.destroy = enc_destroy
};
这里的术语有点离题,因为struct变量是opus\u encoder\u info
,而带点前缀的是struct成员。在任何情况下,struct obs_encoder_info
显然具有名为id
、type
等的成员,并且opus_encoder_info
变量的那些字段正在通过初始化,这是C99的一个新功能。(简而言之,通过在大括号内写入.x=a
,将成员x
初始化为值a
。)
是的,我的回答就像代码是用C写的一样,即使这个问题被标记为“C++”。我认为这是合理的,因为我有理由相信这个代码是C. First,在声明一个变量时使用了struct
关键字后面是一个结构名称,但后面是一个变量(不是标记)名称。此行声明(并初始化)opus\u encoder\u info
为类型为struct obs\u encoder\u info
的变量。(在C++中,<代码>结构> <代码>关键字不是必需的,但在C中是.< /p>
2) 如何在结构变量前面加上。(点)?它是另一个结构的成员变量吗
struct obs_encoder_info opus_encoder_info = {
.id = "ffmpeg_opus",
.type = OBS_ENCODER_AUDIO,
.codec = "opus",
.get_name = opus_getname,
.create = opus_create,
.destroy = enc_destroy
};
这里的术语有点离题,因为struct变量是opus\u encoder\u info
,而带点前缀的是struct成员。在任何情况下,struct obs_encoder_info
显然具有名为id
、type
等的成员,并且opus_encoder_info
变量的那些字段正在通过初始化,这是C99的一个新功能。(简而言之,通过在大括号内写入.x=a
,将成员x
初始化为值a
。)
是的,我的回答就像代码是用C写的一样,即使这个问题被标记为“C++”。我认为这是合理的,因为我有理由相信这个代码是C. First,在声明一个变量时使用了因此,我的结论是,这个问题的标签是错误的。然而,答案的存在(以及被接受的答案)意味着修复问题的标签可能会导致比解决问题更大的混乱。这在C语言中是有效的。是否只允许从C++20开始使用?Thanks@ark1974是的,从C++标准的角度来看。我知道一些编译器很久以前就支持这种语法了。请注意,C和C++支持的特征不一致,这个答案对这个问题是否准确?我查看了链接的源文件,在我看来它更像C99而不是C++20。它在C语言中是有效的。是否只允许从C++20开始使用?Thanks@ark1974是的,从C++标准的角度来看。我知道一些编译器很久以前就支持这种语法了。请注意,C和C++支持的特征不一致,这个答案对这个问题是否准确?我查看了链接的源文件,对我来说,它看起来更像C99而不是C++ 20。这是我见过的最奇怪的C++代码。如果我还没有读到已经被接受的答案,我甚至会惊讶地在C++中编译。我真的需要学习C++20。链接到一个扩展名为“.C”的文件。代码使用
struct
关键字声明类型为struct
的变量。这些是C的指标,而不是C++。你确定这应该是用C++来标记的吗?