S13161 2022-02-01 18:14 采纳率: 66.7%
浏览 167
已结题

VC++语法"特性"问题

有时候在用VS给的项目模板创建项目,或查看msvc文档时,总会看到一个有中括号的语法。
比如说下面代码的[[deprecated]],它的含义是弃用
比如说:

class Test{
public:
  [[deprecated]]
  static void print(){}
}

等同于下面:

package www.test.com;
public class Test{
  @Deprecated
  public static void print();

}

msvc中也有一些,比如https://docs.microsoft.com/zh-cn/cpp/cpp/interface?view=msvc-170

// deriv_interface.cpp
#define _ATL_ATTRIBUTES 1
#include <atlbase.h>
#include <atlcom.h>
#include <string.h>
#include <comdef.h>
#include <stdio.h>

[module(name="test")];

[ object, uuid("00000000-0000-0000-0000-000000000001"), library_block ]
__interface IFace {
   [ id(0) ] int int_data;
   [ id(5) ] BSTR bstr_data;
};

[ coclass, uuid("00000000-0000-0000-0000-000000000002") ]
class MyClass : public IFace {
private:
    int m_i;
    BSTR m_bstr;

public:
    MyClass()
    {
        m_i = 0;
        m_bstr = 0;
    }

    ~MyClass()
    {
        if (m_bstr)
            ::SysFreeString(m_bstr);
    }

    int get_int_data()
    {
        return m_i;
    }

    void put_int_data(int _i)
    {
        m_i = _i;
    }

    BSTR get_bstr_data()
    {
        BSTR bstr = ::SysAllocString(m_bstr);
        return bstr;
    }

    void put_bstr_data(BSTR bstr)
    {
        if (m_bstr)
            ::SysFreeString(m_bstr);
        m_bstr = ::SysAllocString(bstr);
    }
};

int main()
{
    _bstr_t bstr("Testing");
    CoInitialize(NULL);
    CComObject<MyClass>* p;
    CComObject<MyClass>::CreateInstance(&p);
    p->int_data = 100;
    printf_s("p->int_data = %d\n", p->int_data);
    p->bstr_data = bstr;
    printf_s("bstr_data = %S\n", p->bstr_data);
}

那么,当我使用[]时,比如[in]时,会报错https://docs.microsoft.com/zh-cn/cpp/error-messages/compiler-errors-1/compiler-error-c2337?f1url=%3FappId%3DDev16IDEF1%26l%3DZH-CN%26k%3Dk(C2337)%26rd%3Dtrue&view=msvc-170
我得知这个语法的名字叫做“特性”,但在网上一查,却没有一个回答。
那么请问这个语法的功能是什么?它有哪些标识符?

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 修改了问题 2月1日
  • 创建了问题 2月1日

悬赏问题

  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效