【发布时间】:2020-08-01 13:36:06
【问题描述】:
我像这样在 C 中初始化一个静态结构,但在 C++ 中它不想编译。如何在 C++ 中获得仍然与 C 兼容的等价物? (我试图在 MSVC 上编译的 linux C 代码)
typedef struct float3 {
float x,y,z;
} float3;
void main() {
static float3 value = (float3){ 1.f, 5.f, 10.f };
}
MSVC (visual studio 2019) 在 (float3) 之后的左括号“{”处给出错误。
Error (active) E0029 expected an expression cpptestvs D:\Projects\cpptestvs\cpptestvs\cpptestvs.cpp 11
【问题讨论】:
-
static float3 value = { 1.f, 5.f, 10.f }; -
当指定初始化器可以正常工作时,不需要复合文字语法。
-
OT: about:
void main()虽然有些编译器允许main()使用其他签名,但根据 c 标准只有两个有效签名:int main( void )和int main( int argc, char *agrv[] )