首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中的结构声明中冒号是什么意思?

在C中的结构声明中冒号是什么意思?
EN

Stack Overflow用户
提问于 2009-11-03 18:46:55
回答 3查看 11.1K关注 0票数 9

阅读TeXmacs的代码时,我看到了以下内容:

代码语言:javascript
复制
struct texmacs_input_rep : concrete_struct {
...
};

那是什么意思?

这种语法是在p113的C standard中定义的,但是我没有找到它的含义,但那是因为我不知道如何阅读语法规则。

因为concrete_struct是另一个struct,它包含看起来像构造函数和虚拟析构函数的函数,并且因为我在其他地方读到C++中的类实际上是缺省情况下具有公共成员的struct,所以我猜这是C中使用struct进行继承的方式(因为它是C标准...)。

这是正确的吗?

EN

回答 3

Stack Overflow用户

发布于 2009-11-03 18:57:05

GCC不喜欢它(当然是在C模式下)。

看一下规范,我没有看到第113页(6.7.2.1)中定义的规范,它说:

代码语言:javascript
复制
struct-declarator:
    declarator
    declarator_opt : constant-expression

以下是位字段的语法:

代码语言:javascript
复制
struct blah {
    int a : 4;
    int b : 4;
};

总而言之:这不是C,而是C++,它和类继承一样是继承。

票数 7
EN

Stack Overflow用户

发布于 2009-11-03 18:50:33

你确定这是C吗?

你链接到的标准文档没有描述这样的语法,我可以看到。

这看起来像C++,实际上是用来表示该结构继承了另一个结构。TeXmacs compilation page建议您使用C++编译器,这(对我来说)意味着它是用C++编写的,而不是C。

我快速浏览了一下TeXmacs源代码存档,发现了很多".cpp“文件。

票数 3
EN

Stack Overflow用户

发布于 2009-11-03 18:57:09

标准文本中的:不是C结构的一部分。它的存在是为了将被定义的事物和它的定义分开。

在结构声明中没有有效的:用法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1666580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档