首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C宏通数而不是变量

C宏通数而不是变量
EN

Stack Overflow用户
提问于 2018-06-22 03:43:45
回答 3查看 336关注 0票数 2

我想定义带有静态数字的宏,而不是变量作为参数。此宏编译。

代码语言:javascript
复制
#define foo(a) global_variable=a

但这不能编译。

代码语言:javascript
复制
#define foo(1) global_variable=96
#define foo(2) global_variable=117
...
#define foo(53) global_variable=20

我是预计算值,它对应于传递的数字。例如,如果代码中的每个位置都使用global_variable=96,我希望编译器替换foo(1)。这有可能吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-22 04:30:47

正如注释中所传达的那样,您打算使用宏作为foo(1),而不是使用某些变量foo(x)。这是可以做到的。

这是对Joy Allen's answer的补充。

首先,将每个值的宏定义为-

代码语言:javascript
复制
#define foo_1 global_variable=96
#define foo_2 global_variable=117
...
#define foo_53 global_variable=20

现在,您需要一个将实际使用的宏。

代码语言:javascript
复制
#define foo(a) foo_##a

现在您可以使用foo(53),它将被global_variable=20取代。

如果使用未在定义的列表中的值调用宏,则会得到宏替换错误。

票数 2
EN

Stack Overflow用户

发布于 2018-06-22 03:56:07

只需定义如下:

代码语言:javascript
复制
#define FOO_1 global_variable=96
#define FOO_2 global_variable=117
...
#define FOO_3 global_variable=20
票数 0
EN

Stack Overflow用户

发布于 2018-06-22 04:41:11

代码语言:javascript
复制
#define foo(x) foo_##x
#define foo_1 global_variable=96
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50980360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档