首页 > 代码库 > const对象默认为文件的局部变量

const对象默认为文件的局部变量

const 定义的对象为一个常量不能被修改。这个想必大家都知道。

这里只是介绍const对象默认为文件的局部变量

        当一个非const变量在一个c或cpp文件中为全局时,它在整个程序中都可以访问。我们在其他的c或cpp文件要用到这个变量,只需要在文件做合适的声明就能使用。

例如:

main.cpp 中全局变量bufsize

#include <iostream>
using namespace std;

extern void function();
int bufsize = 100;

int main()
{
    function();
    return 0;
}

function.cpp中声明了bufsize

#include <iostream>
using namespace std;

extern int bufsize;

void function()
{
    cout<<"function.cpp***bufsize----------"<<bufsize<<endl;
}

编译运行:

g++ -o main main.cpp function.cpp

./main

function.cpp***bufsize----------100       function.cpp能访问到main.cpp中bufsize


现在我们将bufsize设置成const对象

main.cpp

#include <iostream>
using namespace std;

extern void function();
const int bufsize = 100;

int main()
{
    function();
    return 0;
}

function.cpp内容不变

编译运行:

g++ -o main main.cpp function.cpp

/tmp/ccdvo28n.o: In function `function()‘:
function.cpp:(.text+0xb): undefined reference to `bufsize‘
collect2: ld returned 1 exit status

function.cpp中bufsize没有定义

稍作改进:

main.cpp

#include <iostream>
using namespace std;

extern void function();
extern const int bufsize = 100;

int main()
{
    function();
    return 0;
}

function.cpp不变

编译运行:

g++ -o main main.cpp function.cpp

./main

function.cpp***bufsize----------100
运行正常

总结:

         定义的非const全局变量,它属于整个程序,其他程序要访问只要相应的声明即可;

         定义的const全局变量,属于定义的文件,如果想要整个程序都能访问,则要指定const变量为extern。