在将VC ++ 6.0开发的代码迁移到Visual Studio 2008时,我在代码的下面一行中收到了此警告。
const int const CImportContext::PACKETSIZE = 4096;
我知道如何修复指针
static const int const * PACKETSIZE; // C4114
static const int * const PACKETSIZE; // Correct
但我的问题是如何修复此警告,如果它像下面的那样(没有指针),
static const int const PACKETSIZE;
答案 0 :(得分:10)
指针有两种不同的const
限定符是有意义的,一种是指针本身,另一种是指针所指向的。
但int
类型有两种不同的const
限定符是没有意义的。只需使用一个:
const int CImportContext::PACKETSIZE = 4096;
或
int const CImportContext::PACKETSIZE = 4096;
答案 1 :(得分:0)
“const”限定符是左关联的,它总是适用于它的左侧数据类型,除了没有左侧数据类型的情况,因此只有在这种情况下才会使用它的右侧数据类型。示例中的数据类型是“int”和“*” - 将“const”应用于其中一个或两个都是有意义的。将它应用两次到单个数据类型是没有用的,但提示是一个问题 - 这就是警告的原因。 (“static”是存储的限定符。“PACKETSIZE”是变量对象名。)