为了账号安全,请及时绑定邮箱和手机立即绑定

多个文件中的全局变量

多个文件中的全局变量

C++
莫回无 2019-10-26 12:24:09
我有两个源文件需要访问一个公共变量。做这个的最好方式是什么?例如:source1.cpp:int global;int function();int main(){    global=42;    function();    return 0;}source2.cpp:int function(){    if(global==42)        return 42;    return 0;}全局变量的声明应该是静态的,外部的,还是应该在两个文件都包含的头文件中,等等?
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

全局变量应extern在两个源文件都包含的头文件中声明,然后仅在这些源文件之一中定义:


普通


extern int global;

source1.cpp


#include "common.h"


int global;


int function(); 


int main()

{

    global=42;

    function();

    return 0;

}

source2.cpp


#include "common.h"


int function()

{

    if(global==42)

        return 42;

    return 0;

}


查看完整回答
反对 回复 2019-10-26
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

您添加一个“头文件”,该文件描述模块source1.cpp的接口:


source1.h


#ifndef SOURCE1_H_

#define SOURCE1_H_


extern int global;


#endif

source2.h


#ifndef SOURCE2_H_

#define SOURCE2_H_


int function();


#endif

并在每个使用此变量的文件中添加#include语句,并在(重要)变量中定义该变量。


source1.cpp


#include "source1.h"

#include "source2.h"


int global;     


int main()     

{     

    global=42;     

    function();     

    return 0;     

}

source2.cpp


#include "source1.h"

#include "source2.h"


int function()            

{            

    if(global==42)            

        return 42;            

    return 0;            

}

尽管没有必要,但我建议为该文件使用名称source1.h,以表明它描述了模块source1.cpp的公共接口。以相同的方式,source2.h描述了source2.cpp中公共可用的内容。


查看完整回答
反对 回复 2019-10-26
  • 3 回答
  • 0 关注
  • 520 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信