C语言与C++ const修饰全局变量的区别

本文探讨了C语言和C++中const修饰全局变量时的链接属性区别。在C语言中,const全局变量默认具有外部链接属性,允许在不同文件间共享。而在C++中,const全局变量默认为内部链接,如需在其他文件中使用,需使用extern关键字声明其外部链接。
摘要由CSDN通过智能技术生成

一、C语言下const修饰全局变量默认是外部链接属性

在C语言下 const 默认是外部链接属性,
所以可以在其他文件中被使用

1.test.c

//在test.c中定义一个全局变量m_a
const int m_a = 1000;

2.main.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	//在C语言下const 可以在其他文件中使用
	//告诉编译器外部有一个变量m_a 在其他文件中
	//如果找不到会在链接阶段报错“无法解析的外部命令”
	extern const int m_a;

	printf("%d\n", m_a);
	system("pause");
	return EXIT_SUCCESS;

}

二、C++下const修饰全局变量默认是内部链接属性

在C++const 默认是内部链接属性,所以只能本文件中使用;
要想在其他文件中使用,可以使用 extern 关键字来提高作用域

1.test.cpp

const int m_b = 1005;// 默认是内部链接属性
//所以导致只能在本文件中才可以使用此变量m_b
//在其他文件中找不到

//但是有解决方法 在const 前面 + 关键字 extern 提高作用域(C语言隐式前面有extern)
extern const int m_c = 1005;

2.main.cpp

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>  
using namespace std;

int main()
{
	//extern const int m_b;
	extern const int m_c;

	//cout << "m_b:" << m_b;
	cout << "m_c:" << m_c << endl;

	system("pause");
	return EXIT_SUCCESS;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑师傅炒板栗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值