' const auto'间接层次与' const char * const'

时间:2016-01-11 10:00:13

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

标题中的代码:

extern const char* const foo;

源代码:

const auto foo = "bar";

Visual Studio 2015产生以下错误:

  

错误C2040' foo':' const auto'间接水平不同   ' const char * const'

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

2 个答案:

答案 0 :(得分:0)

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

我希望这段代码在用-pedantic-errors编译时在GCC和clang中抛出错误。

答案 1 :(得分:0)

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