当前位置: 首页 > 面试题库 >

为什么在G ++中未实现指定的初始值设定项

上官斌
2023-03-14
问题内容

是否有任何特定原因为何未将对指定的初始化程序的支持添加到g ?是C99标准来晚了,而g 却被开发得更早,后来人们却不在乎这个问题的原因,还是在C
++语法中实现指定的初始化程序存在一些固有的困难?


问题答案:

正如我在评论中指出的那样,G ++不支持C99标准指定的初始化程序,但是它支持对C90的GNU扩展,它允许指定的初始化程序。所以这不起作用:

union value_t {
    char * v_cp;
    float v_f;
};
union value_t my_val = { .v_f = 3.5f };

但这确实是:

union value_t my_val = { v_f: 3.5f };

这似乎是C和C 标准委员会之间协调不力的互动(没有特别好的理由说明C 不支持C99语法,他们只是没有考虑过)和GCC政治(C
++不应该)仅支持C99语法(仅因为它在C99中),但它应支持GNU扩展语法,该语法可以实现完全相同的功能,因为这是可以应用于任何一种语言的GNU扩展)。



 类似资料:
  • 在我的Angular应用程序中,我有一个组件: 但在“make”属性中我有一个错误。我不知道该怎么处理...

  • 问题内容: 一个简单的例子: HTML CSS 和之间有什么区别?仅支持浏览器 问题答案: 根据您的链接: 是一个CSS值,如果继承了一个属性,则该属性与“继承”相同;如果不继承一个属性,则其属性为“初始” 这是一个例子: 如果您要覆盖样式表中的某些CSS,但您更希望该值是继承的,而不是设置回浏览器的默认值,那么这种情况就很重要。 例如:

  • 我有2个班: A类: B类: 我创建了一个主类,它只创建了一个新的: 我得到的输出是: 如您所见,在静态初始值设定项之前调用了的构造函数。 我知道这与我创建的循环依赖有关,但我的印象是静态初始化器应该总是在构造函数之前运行。 发生这种情况的原因是什么(技术上在java实现中)? 是否建议一起避免静态初始化器?

  • 我通过解决一些黑客等级问题来学习java。下面的代码是关于学习静态初始值设定项块的。例外情况是thown和Capture,但程序仍在运行,我不确定原因。 输入:-1,2 预期输出:java.lang.例外:宽度和高度必须为正 实际输出:宽度和高度必须为正-2

  • 我对Swift类有一个问题。我有UITableViewController类和UITableViewCell类的swift文件。我的问题是UITableViewCell类和网点。这个类有一个错误Class“HomeCell”没有初始化程序,我不明白这个问题。 感谢您的回复。

  • 如果我有: 很明显,这个表达式后面的应该是零,但我看到的任何地方,他们都说这个代码的行为是未定义的,而不仅仅是的值(直到减法之前)。 很明显,编译器可以简单地在变量中使用它认为“方便”的任何垃圾值,并且它将按照预期工作。这种方法有什么问题?