extern使用小谈

extern翻译成中文就是“外部”,在c++中的意思就是所使用的变量和函数是外部的,而不在本文件中定义和声明的。
举个例子:
//name.h
....
void print();
//name.cpp
int i = 10;
void print()
{
    std::cout << 11 << std::endl;
}

//testExtern.h
extern int i;  //注意,此处不需要包含name的头文件
void print();  //函数可以省略extern,和前加extern是一个意思
class testExtern
{
public:
    testExtern();
    void printI();
}

//testExtern.cpp
#include "testExtern.h"
#include <iostream>
testExtern::testExtern()
{
}

void testExtern::printI()
{
    std::cout << i << std::endl;
    print();
}

//main.cpp
....
编译器在编译以上文件的是会干些什么?在编译testExtern.cpp的时候,会把它所包含的所有头文件加进来生成一个中间文件(在windows下常见的obj文件和linux下的o文件就是这种),生成的过程中,当他看到cout的i的时候,就查找其定义,发现有关键词extern修饰,所以就随便给它一个地址,留待链接的时候在外部的中间文件中找到真正的地址填入该处。
对函数也是相同的用法,唯一的区别就是,extern对于函数来说可以省略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值