我有两个需要访问公共变量的源文件.做这个的最好方式是什么?例如:
source1.cpp:
int global;
int function();
int main()
{
global=42;
function();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
source2.cpp:
int function()
{
if(global==42)
return 42;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
变量global的声明是静态的,extern还是应该在两个文件包含的头文件中?
e.J*_*mes 101
全局变量应extern在两个源文件包含的头文件中声明,然后仅在其中一个源文件中定义:
COMMON.H
extern int global;
Run Code Online (Sandbox Code Playgroud)
source1.cpp
#include "common.h"
int global;
int function();
int main()
{
global=42;
function();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
source2.cpp
#include "common.h"
int function()
{
if(global==42)
return 42;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
har*_*per 14
您添加了一个"头文件",它描述了模块source1.cpp的接口:
source1.h
#ifndef SOURCE1_H_
#define SOURCE1_H_
extern int global;
#endif
Run Code Online (Sandbox Code Playgroud)
source2.h
#ifndef SOURCE2_H_
#define SOURCE2_H_
int function();
#endif
Run Code Online (Sandbox Code Playgroud)
并在每个使用此变量的文件中添加#include语句,并在(重要)中定义变量.
source1.cpp
#include "source1.h"
#include "source2.h"
int global;
int main()
{
global=42;
function();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
source2.cpp
#include "source1.h"
#include "source2.h"
int function()
{
if(global==42)
return 42;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
虽然没有必要,但我建议使用文件名source1.h来表明它描述了模块source1.cpp的公共接口.同样,source2.h描述了source2.cpp中的公共可用内容.
| 归档时间: |
|
| 查看次数: |
75592 次 |
| 最近记录: |