【问题标题】:warning C4114: same type qualifier used more than once警告 C4114:多次使用相同类型的限定符
【发布时间】:2015-07-06 16:58:23
【问题描述】:

在将 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;

【问题讨论】:

    标签: c++ visual-c++ constants


    【解决方案1】:

    指针有两种不同的const 限定符是有意义的,一种用于指针本身,另一种用于指针指向的内容。

    但是int 类型有两种不同的const 限定符是没有意义的。只用一个:

    const int CImportContext::PACKETSIZE = 4096;
    

    int const CImportContext::PACKETSIZE = 4096;
    

    【讨论】:

    • 谢谢@余浩。我理解我的错误。更正了!!
    【解决方案2】:

    “const”限定符是左关联的,它总是适用于它的左侧数据类型,除了没有左侧数据类型的情况,因此只有在这种情况下,它才会适用于它的右侧数据类型。您的示例中的数据类型是“int”和“*” - 将“const”应用于其中一个或两个是有意义的。将它两次应用于单个数据类型没有用,但会提示问题 - 这就是警告的原因。 (“static”是存储限定符。“PACKETSIZE”是变量对象名。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-11
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 2011-03-29
      相关资源
      最近更新 更多