VS2010中,用于指示编译器对程序语句做出不同解释的属性是一种什么技术?
这是来自一本叫做《VISUAL C++ 2010入门经典_第5版(中文版)》的书的描述,其中讲到枚举在C+++/CLI中使用的时候,提到了枚举可以作为标志或状态位来使用(上面的图有这样的描述)。
在这个文段中,红色字的部分:
“定义枚举来表示标志涉及属性的使用。属性是在程序语句中添加的附加信息,指示编译器以某种方式修改代码或者插入代码。”
这里提到的属性似乎和平常所理解的诸如类的属性,对象的属性不一样。看他的意思是语句的属性,用来指示编译器行为的。谁有这方面知识的介绍,或者谁能直接说一下,我想深入了解这些知识。谢谢了
[解决办法]
CLI 不清楚, 本地的 C++ 扩展属性一般都以 __declspec 开头, 在 MSDN 中查找即可: http://msdn.microsoft.com/zh-cn/library/vstudio/dabb5z75.aspx
[解决办法]
c++/cli 面向微软 .net 运行时
可以生成.net 的 msil 代码.
因此, 要按照 .net 的规范来,
上文中的'属性'一词, 原文为 attribute,
是 .net 语言规范中的东西,
编译后会写入到类型的元数据中.
attribute 有好多种, 可以加在类型上, 也可以加在函数上, 成员变量上.
每种 attribute 都有一个类型来描述, 具体作用可以查阅 msdn.
比如你提到的这个 Flags attribute,
其实是 System.FlagsAttribute 的简写形式.
通过查看文档中关于 System.FlagsAttribute 的说明得知,
Flags 修饰的 枚举 是用来当作位组 (bit field) 使用的.
其实就是 c/c++ 中常见的 WS_VISIBLE
[解决办法]
WS_CHILD 这样的风格.
在枚举值上有特殊要求.