加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

warning C4482: 使用了非标准扩展: 限定名中使用了枚举

(2011-01-07 15:36:39)
标签:

c

枚举

warning

分类: 电脑网络

来源: http://dev.firnow.com/course/3_program/c++/cppsl/2008619/126863.html

 

MSDN:
compiler warning (level 1) C4482
warning description:

使用了非标准扩展: 限定名中使用了枚举“enum”
当引用类型内的枚举时,无需指定枚举的名称。
文件范围的枚举定义相当于常量,也不需要限定名。

example: C4482(MS Visual Studio)

// C4482.cpp

// compile with: /c /W1

struct S {
   enum E { a };
};

int i = S::E::a; // C4482

int j = S::a; // OK

NOTE:
warring C4482: nonstandard extension used: enum **** used in qualified name

enumeration:
1. Standard C++ does not allow enumeration names to be used as scopes (GCC: error)
Visual C++ is half-hearted on the matter. (warrning)
2. C# support enumeration names as scopes.

Workaround: (for MS Visual Stdio)
if you want to get rid of those obnoxious error message and you’re using MS Visual Studio, encompass your statement in #pragma directives. For example,

#progma warning(push)
#progma warning(disable : 4482)
... (your statement here) ...
#progma warning(pop)

That tells the compiler not to report the C4482 warning for the code within the block.
You are essentially saying to the compiler, “Yes, I’m doing this intentionally. I know it’s not comply with the standard, but I want it done anyway. So build my project and quit your whining!”

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有