#define 在一行中定义多个宏
#define 'ing multiple macros in one line
在C++中,我们可以用#define
来定义一个像#define PI 3.14
这样的宏,然后在整个代码中使用PI
来表示3.14
.
我的问题是:我们能否在一行中 #define
多个宏,这样我就不需要编写 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;
}
有没有一种方法可以在一行中 #define
所有这些宏,这样我就不必像上面的代码片段那样写多行?谢谢。
据我所知,#define 语句的结尾是该行的结尾。所以不,你不能在一行中写几个单独的。正如有人提到的那样,请在此处使用枚举。
不,这在 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 ...
现在是一行多语句。 (看到分号了吗?)
在C++中,我们可以用#define
来定义一个像#define PI 3.14
这样的宏,然后在整个代码中使用PI
来表示3.14
.
我的问题是:我们能否在一行中 #define
多个宏,这样我就不需要编写 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;
}
有没有一种方法可以在一行中 #define
所有这些宏,这样我就不必像上面的代码片段那样写多行?谢谢。
据我所知,#define 语句的结尾是该行的结尾。所以不,你不能在一行中写几个单独的。正如有人提到的那样,请在此处使用枚举。
不,这在 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 ...
现在是一行多语句。 (看到分号了吗?)