zoukankan      html  css  js  c++  java
  • 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。




  • 相关阅读:
    UBUNTU 自动挂载 NTFS
    automake autoconf 学习笔记(转载)
    error: X11/extensions/XInput.h: No such file or directory
    error: undefined macro: AC_PROG_LIBTOOL
    Linux下tar.xz结尾的文件的解压方法
    Ubuntu 修改hosts
    ubuntu主目录下的中文文件夹名改回英文
    ./configure: No such file or directory
    Ubuntu下GTK的安装、编译和测试
    图像适配源码
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6756525.html
Copyright © 2011-2022 走看看