方括号 - 与数组无关?

时间:2015-11-13 08:28:51

标签: c++

我知道硬括号('['和']')用于识别数组, 但在寻找如何使用事件时,我偶然发现了它们的另一种用途,并想知道究竟是什么意思......

我看到的代码(link)如下所示:

// evh_native.cpp
#include <stdio.h>

[event_source(native)]
class CSource {
public:
   __event void MyEvent(int nValue);
};

[event_receiver(native)]
class CReceiver {
public:
    …

所以......我想知道这究竟是什么意思以及它的用途是什么?有人可以解释一下吗?

3 个答案:

答案 0 :(得分:5)

除了数组用法和类operator[]之外,在C ++中还有另一种用法,即lambda的捕获列表,如

int a;
auto func= [a](int i){ return i*a; }

但链接中的示例看起来像非标准(它被称为 native C ++,无论是什么)。另一个用途是属性的双括号,例如

[[noreturn]] void throw_error(std::string const&message);

答案 1 :(得分:4)

这可能是一些事情;对我来说,看起来你的情况是我名单上的最后一个:

  1. 指定数组的索引。

  2. 在lambda表达式或函数中指定捕获列表

  3. []可能会以完全脱离其初衷的方式重载。提升精神就是这样。

  4. 非标准编译器扩展。

  5. 1,2和3都可以用标准C ++实现; 4不能。

答案 2 :(得分:0)

它看起来像C ++ / CLI代码,可能是.NET的一些代码?