【问题标题】:'const auto' differs in levels of indirection from 'const char *const ' [duplicate]“const auto”与“const char *const”的间接级别不同[重复]
【发布时间】:2016-01-11 10:00:12
【问题描述】:

标题中的代码:

extern const char* const foo;

源代码:

const auto foo = "bar";

Visual Studio 2015 产生以下错误:

错误 C2040 'foo': 'const auto' 的间接级别不同 'const char *const'

我的嵌入式编译器(来自 Keil 的 uVision)对此代码没有问题,Clang (coliru) 也没有。我的问题是,这是 VS 编译器的错误还是我的代码有问题?

【问题讨论】:

标签: c++ visual-studio c++11


【解决方案1】:

我认为您的auto 不够const - 它被推断为const char *(这是字符串文字的类型),您需要const char * const。我不认为这是一个编译器错误。

我希望这段代码在使用 -pedantic-errors 编译时会在 GCC 和 clang 中引发错误。

【讨论】:

    【解决方案2】:

    定义应遵循声明(省略extern):const char* const foo = "bar";

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 2013-04-23
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多