我怎样才能持续地通过列举? - 页 6

 
pavlick_:

给程序员的一个提示。


现在,如果我们需要编辑一个枚举,我们可以在一个地方编辑一次。我们需要添加一个新元素,例如 element_new = 56,我们添加

而且,我们不需要费心去编辑函数get_enumqq_array()。该技术被称为X宏https://en.wikipedia.org/wiki/X_Macro。如果开发者愿意,他们可以以类似的方式轻松地修改标准枚举。

也许不是很明显,列举的结果是这样的。

酷!我不知道X微距,谢谢你!我只是不理解这段代码,为什么在定义ENUM_QQ_HELPER的末尾有一个逗号而没有错误。在定义枚举或数组时,最后一个元素后面不应该有一个逗号。但是,由于某些原因,编译器似乎并不对它发誓。

我试图

int a[] = {1, 2,};

不会的。而数组的大小(枚举)也是应该的。很酷啊!这似乎是一个错误,但我宁愿有这样一个错误。真的,这很方便。

 
为什么没有因逗号而产生的错误?

嗯,这是一个合法的违规行为,特别是像这样的各种 "东西",显然。不用担心,这在C/C++中也不是一个错误。

SZZ:在C++标准中关于初始化的主题。

braced-init-list:

   {initializer-list , opt}

   { }

也就是说,在括号-init-list末尾的逗号在最高级别上是合法的。

 
pavlick_:

也就是说,大括号-init-list结尾的逗号在最高级别上是合法的。

谢谢你,我将知道并使用它。
 
pavlick_:

给程序员的一个提示。

那些在评论中的正常名字呢?

 
Комбинатор:

那些在评论中的正常名字呢?

我可以有一个有关枚举的例子吗?
 
Комбинатор:

那些在评论中的正常名字呢?

是的,插入评论不起作用。对枚举进行评论的不幸的语法。

我可以有一个有关枚举的例子吗?

enum E
{
   a = 1         // вот этот комментарий
}
 
pavlick_:

是的,插入评论是行不通的。对枚举进行评论的不幸的语法。

最后用/*...*/结束。
 
fxsaber:
在/*...*/中结束。
这里的废话是,预处理器不想吃注释(包括//和/*),不希望在扩展宏时看到它们。 要么改变预处理器的规则,要么引入另一种注释枚举的方法(注释将在设置中运行脚本时显示),比如这样。

enum E {
   a = 1,            --**--  Комментарий_1
   b = 2            --**--  Комментарий_2
};
我在这里已经无能为力了。
 
pavlick_:
这里的问题是,预处理器不想吃注释(包括//和/*),它不希望在展开宏时看到它们。 要么改变预处理器的规则,要么引入另一种注释枚举的方式(注释将在脚本运行的设置中显示),像这样。

enum E {
   a = 1,            --**--  Комментарий_1
   b = 2            --**--  Комментарий_2
};
我在这里已经无能为力了。
 

预处理是分几个步骤进行的。起初,所有的注释都被从源代码中删除,结果被送去进行处理。而这是预处理器不希望遇到注释的地方(当它打开宏的时候)。它将认为这样的遭遇是一个错误。例如,这里。

#define  COMMENT / ## /

void OnStart()
{
  COMMENT
}
乍一看,这个无害的代码应该包含一个注释。但它无法编译。