'const auto'的间接级别与'const char *const '不同

'const auto' differs in levels of indirection from 'const char *const '

本文关键字:const char 不同 auto      更新时间:2023-10-16

标题中的代码:

extern const char* const foo;

源代码:

const auto foo = "bar";

Visual studio 2015产生以下错误:

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

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

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

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

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