#include
#include
#include
#include
#include
typedef struct
{
double x;
double y;
} vec;
typedef struct
{
vec p0;
vec p1;
vec dir;
} seg;
int main()
{
vec p0={0,1};
vec p1={1,2};
vec dir={1,3};
seg a={p0,p1,dir};
return 0;
提示错误:
d:\cpractice\test\test\test.c(26): error C2440: “初始化”: 无法从“vec”转换为“double”
你好,我用VS2010编译这段代码也会报错,和你的错误一样。
但是我用GCC编译这段代码没有任何问题。
这个不是代码,语法的问题,而是各编译器厂商在实现C编译器时,对标准的支持程度不同。
如果你用VC编译器,建议你会一种写法吧。
seg a;
a.p0 = p0;
a.p1 = p1;
a.dir = dir;
你这个没什么错误呀,要说有错的话,你的头文件包含不全
我用VS2010编译通过,没有任何问题
你这个应该比较麻烦吧 不使用.cpp你只是想编译过吗? 那就修改一下编译器的配置吧 配置里面选择c/c++,在选择高级 里面有个编译为
你选择编译为c++代码。 我电脑用的vs2008 修改一下编译选项可以编译过
根本原因可能就是编译器的支持问题了 你的这个 seg a={p0,p1,dir}; 是复杂数据,在win下面默认c好像支持有问题,c++没问题,所以 如果你不想修改
为cpp文件就修改一下编译选项吧