在C+中初始化结构+;C路 我在C中初始化静态结构,但是在C++中它不想编译。在C++中,如何获得与C兼容的等价物?(我试图在MSVC上编译的linux C代码)
MSVC(visual studio 2019)在(float3)之后的开始括号“{”处给出错误在C+中初始化结构+;C路 我在C中初始化静态结构,但是在C++中它不想编译。在C++中,如何获得与C兼容的等价物?(我试图在MSVC上编译的linux C代码),c++,c,struct,static,init,C++,C,Struct,Static,Init,MSVC(visual studio 2019)在(float3)之后的开始括号“{”处给出错误 尝试在void main()中包含的语句中删除对float3的强制转换 这是一个C,而不是C++。C允许您创建一个未命名的对象:“代码>浮动3/,并用初始化列表初始化它。一些编译器,例如GCC,确实支持它作为扩展,但MSVC不支持。 要想做你想做的事,你可以做: static float3 value = { 1.f, 5.f, 10.f }; 这是:structfloat3中的每个非静态类成员都
尝试在
void main()
中包含的语句中删除对float3的强制转换
这是一个C,而不是C++。C允许您创建一个未命名的对象:“代码>浮动3/<代码>,并用初始化列表初始化它。一些编译器,例如GCC,确实支持它作为扩展,但MSVC不支持。 要想做你想做的事,你可以做:
static float3 value = { 1.f, 5.f, 10.f };
这是:struct
float3
中的每个非静态类成员都是从初始值设定项列表的相应子句中复制初始化的。您的结构是一个聚合,因为它没有用户声明的构造函数,没有私有或受保护的非静态数据成员,没有基类,也没有虚拟函数。静态float3值={1.f,5.f,10.f};
当指定的初始值设定项可以正常工作时,不需要复合文字语法。OT:关于:void main()
尽管一些编译器允许对main()
使用其他签名,但根据c标准,只有两个有效签名:int main(void)
和int main(int argc,char*agrv[])
Error (active) E0029 expected an expression cpptestvs D:\Projects\cpptestvs\cpptestvs\cpptestvs.cpp 11
static float3 value = (float3){ 1.f, 5.f, 10.f };
static float3 value = { 1.f, 5.f, 10.f };