首页 > 解决方案 > 检测 c++14 的 msvc 编译器的未定义变量

问题描述

考虑以下 C++14(很重要)代码:

struct B {
    static constexpr int a = 1;
};

int main() {
    auto p = &B::a;
}

使用 gcc 编译它会导致“未定义的引用”,因为B::a未定义(刚刚声明)。要解决这个问题,我们只需要B::a在结构之外定义:

constexpr int B::a;

但是我的 msvc 编译器有问题。即使没有定义B::a刚刚编译好的第一个代码摘录(没有“未定义的引用”问题)。

有没有办法(我认为是编译器选项)说 msvc 来检测为 C++14 标准编译的此类问题,即何时/std:c++14使用选项?

这是我测试问题的godbolt的链接:https ://godbolt.org/z/G8BnFY

标签: c++visual-c++c++14undefined-reference

解决方案


推荐阅读