【发布时间】:2020-01-31 15:19:12
【问题描述】:
我正在将现有 C 代码导入/移植到 C++。我希望对现有代码体进行尽可能少的更改,以最大程度地减少对现有代码的干扰。 此代码使用嵌套结构的静态命名初始化。快速编造的例子:
Car car =
{
.color = RED,
.tire.tread = OLD,
.tire.diameter = 27.106,
.tire.material.type = RUBBER,
.tire.material.density = 700,
};
我发现these are called designated initializers。
我了解了GNU initializers,但我还没有弄清楚如何用它来实现层次结构。
我读到了designated initializers are supported in g++ with c++11 enabled,但这似乎对我不起作用。
我要移植的代码有初始化页面,至少有四层深度。因此,我正在尝试寻找一种不涉及太多的简单转换。
我正在寻找以下可能的解决方案之一:
- 如何启用 C99 指定初始化程序
- 如何制定分层 GNU 样式初始化
- 什么是 C++ 等效方法来执行此操作,这样在转录战争与和平时不会出错。
- 我没想到的明显解决方案
我用的是g++版本
g++.exe (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0
【问题讨论】:
-
我也试过 -std=c++2a 这也会导致错误:expected primary-expression before '.'令牌