可视化的一个MS扩展到c++的有用性

visual Usefulness of an MS extensions to C++

本文关键字:MS 扩展到 有用性 一个 c++ 可视化      更新时间:2023-10-16

微软对c++扩展的最后一项,"将非Const指针参数传递给期望引用Const指针参数的函数",是一个扩展,因此它可以被认为是一个有益的特性。然而,我看不出它的价值。他们所展示的例子表明这是危险的。

typedef int T;
const T  acT = 9;                 // A constant of type 'T'
const T * pcT = & acT;            // A pointer to a constant of type 'T'
void func2 ( const T * & rpcT )   // A reference to a pointer to a constant of type 'T'
{
    rpcT = pcT;
}
T * pT;                           // A pointer to a 'T'
void func ()
{
    func2 ( pT );                 // Should be an error, but isn't detected
    * pT   = 7;                   // Invalidly overwrites the constant 'acT'
}

为什么它是一个扩展而不是一个bug?

因为"这不是一个bug,这是一个特性。"

是的,这显然是一件坏事。你得去问微软负责的工程师,但我怀疑这是一个bug,它被维护只是因为某些人的软件依赖于它,而微软想要保持向后兼容性。

然而,似乎这个文档已经过时了:我无法让Visual Studio 2015或2013接受使用此扩展名的代码。