#定义';在一行中删除多个宏 在C++中,我们可以使用定义> 定义宏类 >定义PI 3.14 < /代码>,然后在代码中使用Pi>代码>表示代码> 3.14

#定义';在一行中删除多个宏 在C++中,我们可以使用定义> 定义宏类 >定义PI 3.14 < /代码>,然后在代码中使用Pi>代码>表示代码> 3.14,c++,macros,C++,Macros,我的问题是:我们能否在一行中定义多个宏,这样我就不需要写n行来定义n个宏了 实际上,我想用替换名称(实际上是字母)来表示数组元素,正如下面的代码片段所示 #include <cstdlib> #include <math.h> #include <time.h> #define R dig[0] #define E dig[1] #define D dig[2] #define B dig[3] #define L dig[4] #define U dig[5

我的问题是:我们能否在一行中定义多个宏,这样我就不需要写n行来定义n个宏了

实际上,我想用替换名称(实际上是字母)来表示数组元素,正如下面的代码片段所示

#include <cstdlib>
#include <math.h>
#include <time.h>
#define R dig[0]
#define E dig[1]
#define D dig[2]
#define B dig[3]
#define L dig[4]
#define U dig[5]
#define Y dig[6]
#define O dig[7]
#define W dig[8]
using namespace std;

int main() {
    int dig[9]={1,2,3,4,5,6,7,8,9}; // R,E,D,B,L,U,Y,O,W
    return 0;
}
#包括
#包括
#包括
#定义R dig[0]
#定义E dig[1]
#定义D dig[2]
#定义B dig[3]
#定义L dig[4]
#定义U-dig[5]
#定义Y dig[6]
#定义O dig[7]
#定义W dig[8]
使用名称空间std;
int main(){
int dig[9]={1,2,3,4,5,6,7,8,9};//R,E,D,B,L,U,Y,O,W
返回0;
}

有没有一种方法可以在一行中定义所有这些宏,这样我就不必像上面的代码片段那样写多行了?谢谢。

好的,define语句的结尾就是这行的结尾。所以不,你不能在一行中写几个单独的。如有人提到的,使用EnUM代替.< /P> < P>不,这在C或C++中是不可能的。
您是否考虑过编写一个程序来在构建时生成重复代码?这是一种被低估的技术。

定义一个宏已经够糟糕的了

在您的评论中,您想知道另一种方法。C++中有一个:

auto &R = dig[0], &E = dig[1], &D = dig[2] // etc ...
这不仅仅是一行,甚至是一句话。稍微详细一点,你可以这样做

auto &R = dig[0]; auto &E = dig[1]; auto &D = dig[2] // etc ...

现在一行有多条语句。(看到分号了吗?

没有。但是你可以使用
enum
。这是个坏主意。你到底想解决什么问题?@M.M,一个密码术。我已经解决了这个问题,只需要知道我是否可以通过使用多个
#define
s来缩短代码;如果您的代码使用了此选项,那么您的代码将得到极大的改进。但是根据你的帖子,我们不知道你的代码是什么样子。@M.M,如果查看完整的源代码有帮助,那就是。你不能使用
enum
来做海报试图做的特定事情;只有宏才能工作。对。Enum不适合这里(至少在这种形式下),我的错。哦,真的。没有注意到他真正想要什么。所以,是的,也就是说,只有宏可以在这里提供帮助。或者您将dig[A]与enum一起使用。我试过了。想不出什么,这就是为什么我这么问的原因。当你使用IDE@M.M“获得一个真正的计算机构建工具。”一种方法是使用PHP生成C(或ASP或JSP或任何类似的工具;我听说也可以使用awk,但我还不确定)。它有好处,但仅仅对于这一个自动化来说,它并不真正值得。