struct _TEST
{
int d1;
int d2;
};
struct _TEST_E
{
int e1;
_TEST e2; //嵌套结构体
};
用常量赋初值,编译通过
_TEST_E test_e = {3,{1,2}};
用变量赋初值,编译报错
_TEST test = {1,2};
_TEST_E test_e = {3,test};
VC编译的错误信息:
error C2440: 'initializing' : cannot convert from 'struct _TEST' to 'int'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
7 个解决方案
#1
vs.net 2003编译通过..
#2
换个编译器吧,语法没有问题
#3
vc6下变通一下
_TEST test = {1,2};
_TEST_E test_e;
test_e.e1=3;
test_e.e2=test;
_TEST test = {1,2};
_TEST_E test_e;
test_e.e1=3;
test_e.e2=test;
#4
变通太麻烦了,我是想在外部定义赋了初值的常变量,变通后我就得再增加一个初始化的全局函数来负责赋值了.
另外:
vs.net 2003编译通过是用的C#的编译器还是VC++.NET的编译器,或者这两个编译器一样吗?
不知道GCC下是否可以编译通过?
另外:
vs.net 2003编译通过是用的C#的编译器还是VC++.NET的编译器,或者这两个编译器一样吗?
不知道GCC下是否可以编译通过?
#5
>> 不知道GCC下是否可以编译通过?
用 GCC 3.4.0,通过。
用 GCC 3.4.0,通过。
#6
早一些的编译器中,声明时的初始化必须使用常量。
如:
int a[3]={1,2,3};
而不能用变量去赋值。这就是为什么第一次能通过而后一种通不过的原因。
error C2440: 'initializing' : cannot convert from 'struct _TEST' to 'int'
--------------------------------------------
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
可能是因为c遗留的“弱类型”问题,在c中,默认的类型是int。加上上而所述原因,就是错误中划线部分的解释。
如:
int a[3]={1,2,3};
而不能用变量去赋值。这就是为什么第一次能通过而后一种通不过的原因。
error C2440: 'initializing' : cannot convert from 'struct _TEST' to 'int'
--------------------------------------------
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
可能是因为c遗留的“弱类型”问题,在c中,默认的类型是int。加上上而所述原因,就是错误中划线部分的解释。
#7
用VS.net2003的编译器试了一下,果然可以;
用REDHAT8带的那个GCC试了一下,也确实可以.
所以决定从此换开发环境了,WINDOWS下全面转向VS.NET2003.
VC6从出来就开始用,去年准备转向2003的,安装了,觉得太大,我又只是用MFC,所以又卸掉了,
现在看来是放弃VC6的时候了.安装2003用了1个多小时.还是VC6简洁快速.
不过我现在基本还是用MFC,但可以逐渐熟悉一下C#和.NET库了.
多谢上面几位指点,一会逐个给分.刚注册的,分不多,XD们见谅.还得现场学习下怎么发钱^-^
用REDHAT8带的那个GCC试了一下,也确实可以.
所以决定从此换开发环境了,WINDOWS下全面转向VS.NET2003.
VC6从出来就开始用,去年准备转向2003的,安装了,觉得太大,我又只是用MFC,所以又卸掉了,
现在看来是放弃VC6的时候了.安装2003用了1个多小时.还是VC6简洁快速.
不过我现在基本还是用MFC,但可以逐渐熟悉一下C#和.NET库了.
多谢上面几位指点,一会逐个给分.刚注册的,分不多,XD们见谅.还得现场学习下怎么发钱^-^
#1
vs.net 2003编译通过..
#2
换个编译器吧,语法没有问题
#3
vc6下变通一下
_TEST test = {1,2};
_TEST_E test_e;
test_e.e1=3;
test_e.e2=test;
_TEST test = {1,2};
_TEST_E test_e;
test_e.e1=3;
test_e.e2=test;
#4
变通太麻烦了,我是想在外部定义赋了初值的常变量,变通后我就得再增加一个初始化的全局函数来负责赋值了.
另外:
vs.net 2003编译通过是用的C#的编译器还是VC++.NET的编译器,或者这两个编译器一样吗?
不知道GCC下是否可以编译通过?
另外:
vs.net 2003编译通过是用的C#的编译器还是VC++.NET的编译器,或者这两个编译器一样吗?
不知道GCC下是否可以编译通过?
#5
>> 不知道GCC下是否可以编译通过?
用 GCC 3.4.0,通过。
用 GCC 3.4.0,通过。
#6
早一些的编译器中,声明时的初始化必须使用常量。
如:
int a[3]={1,2,3};
而不能用变量去赋值。这就是为什么第一次能通过而后一种通不过的原因。
error C2440: 'initializing' : cannot convert from 'struct _TEST' to 'int'
--------------------------------------------
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
可能是因为c遗留的“弱类型”问题,在c中,默认的类型是int。加上上而所述原因,就是错误中划线部分的解释。
如:
int a[3]={1,2,3};
而不能用变量去赋值。这就是为什么第一次能通过而后一种通不过的原因。
error C2440: 'initializing' : cannot convert from 'struct _TEST' to 'int'
--------------------------------------------
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
可能是因为c遗留的“弱类型”问题,在c中,默认的类型是int。加上上而所述原因,就是错误中划线部分的解释。
#7
用VS.net2003的编译器试了一下,果然可以;
用REDHAT8带的那个GCC试了一下,也确实可以.
所以决定从此换开发环境了,WINDOWS下全面转向VS.NET2003.
VC6从出来就开始用,去年准备转向2003的,安装了,觉得太大,我又只是用MFC,所以又卸掉了,
现在看来是放弃VC6的时候了.安装2003用了1个多小时.还是VC6简洁快速.
不过我现在基本还是用MFC,但可以逐渐熟悉一下C#和.NET库了.
多谢上面几位指点,一会逐个给分.刚注册的,分不多,XD们见谅.还得现场学习下怎么发钱^-^
用REDHAT8带的那个GCC试了一下,也确实可以.
所以决定从此换开发环境了,WINDOWS下全面转向VS.NET2003.
VC6从出来就开始用,去年准备转向2003的,安装了,觉得太大,我又只是用MFC,所以又卸掉了,
现在看来是放弃VC6的时候了.安装2003用了1个多小时.还是VC6简洁快速.
不过我现在基本还是用MFC,但可以逐渐熟悉一下C#和.NET库了.
多谢上面几位指点,一会逐个给分.刚注册的,分不多,XD们见谅.还得现场学习下怎么发钱^-^