• c++中 extern


    用例子给你示范 
    // 1.cpp
    int x = 10;
    // 2.cpp 注意没有包含1.cpp
    #include <iostream>
    using namespace std;
    extern int x;
    int main ()
    { cout << x << endl; }
    //则输出10
    两个文件同在一个项目(project)中,你不包含某个文件(cpp)而可以用它内部定义的变量,(里是.pp不是.h, 因为在.h中定义的数据不能在.cpp中用除非这个.cpp包含这个.h文件)
    例:
    // 1.h
    #include <iostream>
    void print()
    {
    std::cout << "hello!" << std::endl;
    }
    // 2.cpp
    #include <iostream>
    using namespace std;
    // 以上两句在这个例子中可以不要
    extern void print();
    int main ()
    {
    print();
    }
    就会出错因为1.h中的void print();在不包含它的文件中是不可调用的,即使在声明了extern 也于事无补,如果你将这个例子中的1.h名字换成1.cpp就对了!
    从这些可以看出来,extern在这里起的作用是告诉编译器,你这个print()已经在某个.cpp中已经定义了,这里只不过是声明一下有这个东西,然后拿来用一下。定义只能出现一次,声明却可出现多次,也就是说extern声明可在多个文件中用(包括.h)
    还有,你还可以屏蔽extern声明,如第二个例子中的第二个.cpp文件可以改成
    #include <iostream>
    using namespace std;
    // 这里以上两句不能省略,因为,这里extern void print();函数已经不起作用了,在这里调用的而是本文件中定义的void print()函数,其中用到了cout,endl;他们来源于std::<iostream>
    extern void print();
    void print()
    {
    cout << "world!" << endl;
    }

    int main ()
    {
    print();
    }
    // 输出结果为world!
    还有一个extern "C"就不用说了,用这个可以允许C++程序中调用C的函数!
  • 相关阅读:
    Qt自定义控件
    Qt布局的简单介绍
    Qt-ui的简单使用,常用控件(2)
    Qt--ui的简单使用(1)
    走向微信api开发
    一文一项目, 代码分析篇
    关于重写一些曾经写的东西
    最近发现一个数据库,好像可以用,于是做了一个调查,把一般常用的和可能踩的坑都查了一下方法,记录了一下,以后可以使用.
    号外一下
    抄来的,占个位儿【百度架构师是怎样搭建MySQL分布式集群】
  • 原文地址:https://www.cnblogs.com/wanqieddy/p/4424395.html
Copyright © 2020-2023  润新知