首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Extern "C“全局变量的extern声明

关于Extern "C“全局变量的extern声明
EN

Stack Overflow用户
提问于 2014-01-09 16:48:22
回答 1查看 1.2K关注 0票数 4

在C和C++中,如果我想在其他编译单元中使用全局变量,我将定义以下变量:

代码语言:javascript
复制
int g_myVal = 0;

这将为int分配存储空间。

然后在头文件中声明变量:

代码语言:javascript
复制
extern int g_myVal;

这将通知编译器所述符号存在于其他编译单元中。然后由链接器来解析符号。

但是,如果我想让变量可用"C“链接,我必须定义变量(分配存储)如下:

代码语言:javascript
复制
extern "C" int g_myVal = 0;

那么,如何区分如何分配存储和只通知编译器在另一个编译单元中存在所述符号?

EN

回答 1

Stack Overflow用户

发布于 2014-01-09 17:01:39

在本例中,设置初始化器= 0将声明更改为定义,这就是此处分配存储的原因。(即使只是普通的extern,也会发生同样的情况。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21026264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档