解决 error C2374 : g_num : redefinition : multiple initialization

解决 error C2374 : g_num : redefinition : multiple initialization

声明类型
1、需要建立存储空间的(如int a;),称为定义性声明,简称定义;
2、不需要建立存储空间(如extern int a;),称为引用性声明,简称声明。

问题描述:如果在.h文件中定义g_num,多个.cpp文件想共用g_num,因此都包含该.h文件,会造成g_num重复定义。
解决方案:g_num在.h里面声明(extern int g_num;),需要在其中一个.cpp文件定义(int g_num;)。

// -------------a.h-------------
	#ifndef A_H
	#define A_H
	int extern g_num;  // 声明g_num
	// int g_num = 10; // error C2374: 'g_num' : redefinition; multiple initialization
	void FuncA();
	void FuncB();
	#endif
	
	// -------------a.cpp-------------
	#include "a.h"
	int g_num = 1; // 定义g_num,值为1
	void FuncA()
	{
		g_num = 11;  // g_num赋值为11
	}
	
	// -------------b.cpp-------------
	#include "a.h"
	void FuncB()
	{
		g_num = 111;  // g_num赋值为111
	}
	
	// -------------main.cpp-------------
	#include "a.h"
	int main()
	{
		// g_num的值为1
		FuncA();
		// g_num的值为11
		FuncB();
		// g_num的值为111
		return 0;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值