我可以使用包含指定初始值设定项的 C 标头作为C++吗?

Can I use a C header containing designated initializers as C++?

本文关键字:C++ 包含指 可以使 我可以      更新时间:2023-10-16

我正在尝试在C++环境中与 C 文件接口,其中一部分在声明时定义了一个数据结构,并为每个成员分配了指定的初始值设定项:

59    struct {
60       int x;
61       int y;
62       int z;
63    }point_singleton = {
64       .x = 0,
65       .y = 0,
66       .z = 0,
67    };

但是,如果我尝试在C++环境中的Visual Studio中与它进行交互以进行其他测试,则会出现语法错误:

(64(: 错误 C2059: 语法错误: '.">

(67(: 错误 C2143:语法错误:在"}"之前缺少";">

(67(: 错误 C2059: 语法错误:"}">

是否可以在不更改代码的情况下解决它?

不,因为该语法在C++是不合法的。

将 C 代码编译为 C,因为 C 不是C++的子集。