C++ source_annotation_attribute
C++ source_annotation_attribute
浏览开源源代码时.NET Framework 4.7 I stumbled across the C++ header sal.h
and found a line of code saying [source_annotation_attribute( SA( Method ) )]
which seems to be similar to attributes and the AttributesUsage
class in C#。
现在我知道一般来说,C++和C#中都有,我的第一个猜测是[source_annotation_attribute( SA( Method ) )]
只是一个宏,但在[=中都没有定义12=] 也不在任何其他 headers 中,因为 sal.h
没有 #include
。
我的下一个猜测是 [source_annotation_attribute]
实际上是内置在 MSVC 中的,就像例如[[noreturn]]
属性。
如果有人能阐明它到底是什么,如果它没有内置到编译器中,我能声明我自己的类似属性,我会很高兴。
如果您想亲自查看,特定文件是 \Source\externalapis\legacy\vctools\vc12\inc\vc\sal.h
并且属性出现在行 1934
.
中(除其他外)
这里有一个在sal.h
中使用的例子:
[source_annotation_attribute( SA( Method ) )]
struct __M_
{
#ifdef __cplusplus // [
__M_();
#endif // ]
int __d_;
};
typedef struct __M_ __M_;
非常感谢。
总结@VTT 已经说过的话,source_annotation_attribute
似乎是一个编译器内置结构,它作为 Microsoft extension 的一部分提供给 C++
(即使在那里没有提到,因为它是一个实现细节,仅供内部使用)仅在使用编译器开关 /Ze
编译时有效
更重要的是,微软 SAL 深深植根于 Visual Studio
即
Build -> Run Code Analysis on Solution
and since Visual Studio (obviously) uses their MSVC compiler, it is not too implausible that Microsoft would not build any internal constructs like this in their compilers.
浏览开源源代码时.NET Framework 4.7 I stumbled across the C++ header sal.h
and found a line of code saying [source_annotation_attribute( SA( Method ) )]
which seems to be similar to attributes and the AttributesUsage
class in C#。
现在我知道一般来说,C++和C#中都有[source_annotation_attribute( SA( Method ) )]
只是一个宏,但在[=中都没有定义12=] 也不在任何其他 headers 中,因为 sal.h
没有 #include
。
我的下一个猜测是 [source_annotation_attribute]
实际上是内置在 MSVC 中的,就像例如[[noreturn]]
属性。
如果有人能阐明它到底是什么,如果它没有内置到编译器中,我能声明我自己的类似属性,我会很高兴。
如果您想亲自查看,特定文件是 \Source\externalapis\legacy\vctools\vc12\inc\vc\sal.h
并且属性出现在行 1934
.
这里有一个在sal.h
中使用的例子:
[source_annotation_attribute( SA( Method ) )]
struct __M_
{
#ifdef __cplusplus // [
__M_();
#endif // ]
int __d_;
};
typedef struct __M_ __M_;
非常感谢。
总结@VTT 已经说过的话,source_annotation_attribute
似乎是一个编译器内置结构,它作为 Microsoft extension 的一部分提供给 C++
(即使在那里没有提到,因为它是一个实现细节,仅供内部使用)仅在使用编译器开关 /Ze
更重要的是,微软 SAL 深深植根于 Visual Studio 即
Build -> Run Code Analysis on Solution and since Visual Studio (obviously) uses their MSVC compiler, it is not too implausible that Microsoft would not build any internal constructs like this in their compilers.