当前位置: 技术问答>linux和unix
赋值不兼容的问题(C语言),很迷惑
来源: 互联网 发布时间:2016-08-03
本文导语: a.h ************ typedef struct { int a; }TEST; TEST a(); a.c ********* #include "a.h" TEST a() { TEST test; test.a = 60; return test; } t.c ************ #include "a.h" main() { TEST ttt; ttt = a(); //就在这里发...
a.h
************
typedef struct
{
int a;
}TEST;
TEST a();
a.c
*********
#include "a.h"
TEST a()
{
TEST test;
test.a = 60;
return test;
}
t.c
************
#include "a.h"
main()
{
TEST ttt;
ttt = a(); //就在这里发生了赋值类型不兼容的问题
}
我是在linux中编译的 用的是gcc
在这里发生错误后,我又通过memcpy(&ttt, (TEST *)a(), sizeof(TEST));来替换,还是有错误
大家看看这是什么问题呢。
************
typedef struct
{
int a;
}TEST;
TEST a();
a.c
*********
#include "a.h"
TEST a()
{
TEST test;
test.a = 60;
return test;
}
t.c
************
#include "a.h"
main()
{
TEST ttt;
ttt = a(); //就在这里发生了赋值类型不兼容的问题
}
我是在linux中编译的 用的是gcc
在这里发生错误后,我又通过memcpy(&ttt, (TEST *)a(), sizeof(TEST));来替换,还是有错误
大家看看这是什么问题呢。
|
楼主错误是什么啊
你是怎么编译的
我把你的代码考到CentOS下编译没有出错 我在你的t.c最后加了一句 printf("%dn",ttt.a);
执行后输出60
你是怎么编译的
我把你的代码考到CentOS下编译没有出错 我在你的t.c最后加了一句 printf("%dn",ttt.a);
执行后输出60
|
试了下,没有问题啊!
|
跟gcc没有关系,谁说C语言可以结构体直接赋值呢?
|
编译器没那么智能,有时反而报的使人误解