本文介绍了为什么在构建结构时在Visual C ++ 2008中收到这些警告?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个代码

  typedef struct 
{
const char * fooString;
const bool fooBool;
} fooStruct;

此初始值程式:

  static const fooStruct foo [] = 
{
{file1,true},
{file2,false},
... 。
};

使用这个代码我在VS2008有3个警告:

 错误C2220:警告被视为错误 - 无对象文件生成
警告C4510:'< unnamed-tag>':无法生成默认构造函数
警告C4512:'<未命名标签>':不能生成赋值运算符
警告C4610:struct'< unnamed-tag>'永远不能实例化 - 用户定义构造函数


解决方案

C4610警告不正确。这是Visual C ++中的一个已知错误。请参阅Microsoft Connect错误

为什么发出其他两个警告(C4510和C4512)。


I have this code

typedef struct
{
    const char* fooString;
    const bool  fooBool;
}fooStruct;

And this initializer:

static const fooStruct foo[] =
{
    {"file1", true},
    {"file2", false},
    ....
};

With this code I have 3 warnings in VS2008:

error C2220: warning treated as error - no 'object' file generated  
warning C4510: '<unnamed-tag>' : default constructor could not be generated
warning C4512: '<unnamed-tag>' : assignment operator could not be generated
warning C4610: struct '<unnamed-tag>' can never be instantiated - user defined constructor required 
解决方案

The C4610 warning is incorrect. This is a known bug in Visual C++. See the Microsoft Connect bug "Improper issuance of C4610."

Adam Rosenfield explains why the other two warnings (C4510 and C4512) are emitted.

这篇关于为什么在构建结构时在Visual C ++ 2008中收到这些警告?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 08:39