. c文件改成. cpp文件后结构体会发生变化吗?

.cpp文件可以既写c又写c++吧,为什么我把.c文件转成.cpp文件后,本来结构体里定义的结构体就不是该结构体里的成员了?

.h文件里定义结构体:

struct MsgHeader	//封装消息头
{
	enum MSGTAG msgID;	//当前消息标记    4
	union MyUnion
	{
		struct
		{
			char fileName[100];	//文件名    100
			int fileSize;	//文件大小    4
			int sharding;	//分片数	4
		}fileInfo;
		struct
		{
			int nStart;	//包的编号    4
			int nsize;	//包的数据大小    4
			char buf[PACKET_SIZE];
			int s;	//检验和	4
		}packet;
	};
};

 

 编译出错:

 

给union定义以各名字就可以了 header.fileOrPackage.fileInfo

struct MsgHeader	//封装消息头
{
	enum MSGTAG msgID;	//当前消息标记    4
	union MyUnion
	{
		struct
		{
			char fileName[100];	//文件名    100
			int fileSize;	//文件大小    4
			int sharding;	//分片数	4
		}fileInfo;
		struct
		{
			int nStart;	//包的编号    4
			int nsize;	//包的数据大小    4
			char buf[PACKET_SIZE];
			int s;	//检验和	4
		}packet;
	} fileOrPacket;
} header;

 

 在函数中,对变量的声明必须放置到函数开始的地方,不许在函数声明语句块中插入任何语句,赋值语句,函数执行语句,都不许在成名语句段中出现,否则就会出错!

参考一下https://www.cnblogs.com/arxive/p/5072681.html

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632