为什么extern变量模板不需要定义?

时间:2017-05-26 15:50:49

标签: c++ templates global-variables extern

最近,我在C ++中使用变量模板进行了一些努力,发现了一些我不理解的东西。假设您有两个全局变量 ab,它们在头文件中声明为 extern 。这两者之间的区别在于,b变量模板a不是。现在,我不明白的是,a确实需要定义b需要
所以我的< strong>问题是,为什么b不需要定义,a或者更确切地说链接器为什么知道定义b?我可以明确定义 b吗?如果是,在哪里如何
也许我做错了什么,但如果我测试它,代码会编译,链接并正确运行VC ++ 2017编译器。
这是相关的代码

// header.hpp
#pragma once

extern int a;

template<typename T>
extern T b;

// source.cpp    
#include "header.hpp"

int a; // definition of a, but definition of b is missing

// main.cpp
#include "header.hpp"

int main()
{
    a = 1;
    b<int> = 1;
    return 0;
}

0 个答案:

没有答案