我想定义带有静态数字的宏,而不是变量作为参数。此宏编译。
#define foo(a) global_variable=a但这不能编译。
#define foo(1) global_variable=96
#define foo(2) global_variable=117
...
#define foo(53) global_variable=20我是预计算值,它对应于传递的数字。例如,如果代码中的每个位置都使用global_variable=96,我希望编译器替换foo(1)。这有可能吗?
发布于 2018-06-22 04:30:47
正如注释中所传达的那样,您打算使用宏作为foo(1),而不是使用某些变量foo(x)。这是可以做到的。
这是对Joy Allen's answer的补充。
首先,将每个值的宏定义为-
#define foo_1 global_variable=96
#define foo_2 global_variable=117
...
#define foo_53 global_variable=20现在,您需要一个将实际使用的宏。
#define foo(a) foo_##a现在您可以使用foo(53),它将被global_variable=20取代。
如果使用未在定义的列表中的值调用宏,则会得到宏替换错误。
发布于 2018-06-22 03:56:07
只需定义如下:
#define FOO_1 global_variable=96
#define FOO_2 global_variable=117
...
#define FOO_3 global_variable=20发布于 2018-06-22 04:41:11
#define foo(x) foo_##x
#define foo_1 global_variable=96https://stackoverflow.com/questions/50980360
复制相似问题