标题中的代码:
extern const char* const foo;
源代码:
const auto foo = "bar";
Visual Studio 2015产生以下错误:
错误C2040' foo':' const auto'间接水平不同 ' const char * const'
我的嵌入式编译器(来自Keil的uVision)对此代码没有任何问题,Clang (coliru)也没有问题。我的问题是,这是VS编译器中的错误还是我的代码中存在问题?
答案 0 :(得分:0)
我认为您的auto
不够const
- 它被推断为const char *
(这是字符串文字的类型),您需要const char * const
}。我不认为它是编译器错误。
我希望这段代码在用-pedantic-errors
编译时在GCC和clang中抛出错误。
答案 1 :(得分:0)
定义应遵循声明(省略extern):const char* const foo = "bar";