在浏览开源.NET Framework 4.7的源代码时,我偶然发现了 C++ 标头sal.h
,发现一行代码[source_annotation_attribute( SA( Method ) )]
似乎与C#中的属性和AttributesUsage
类相似。
现在我知道,一般来说, C++ 中没有像 C# 中那样的用户定义属性,我的第一个猜测是这[source_annotation_attribute( SA( Method ) )]
只是一个宏,但它既没有在任何其他头文件中定义,sal.h
也没有在任何其他头文件中定义,因为sal.h
没有#include
。
我的下一个猜测是它[source_annotation_attribute]
实际上是内置在 MSVC 中的,就像例如[[noreturn]]
属性一样。
如果有人可以阐明它的实际含义,如果我可以声明自己的类似属性,如果它没有内置到编译器中,我会很高兴。如果您想亲自查看,则特定文件是\Source\externalapis\legacy\vctools\vc12\inc\vc\sal.h
并且该属性(以及其他)出现在 line 中1934
。
下面是一个使用示例sal.h
:
[source_annotation_attribute( SA( Method ) )]
struct __M_
{
#ifdef __cplusplus // [
__M_();
#endif // ]
int __d_;
};
typedef struct __M_ __M_;
提前谢谢了。