带内存的 C++ 宏? [英] c++ macros with memory?

查看:22
本文介绍了带内存的 C++ 宏?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以定义宏

write_foo(A);
and
read_foo();

这样:

WRITE_FOO(hello);

code_block_1;

READ_FOO();

code_block_2;

READ_FOO();

WRITE_FOO(world);

code_block_3;

READ_FOO();

code_block_4;

READ_FOO();

扩展为:

code_block_1;
hello;
code_block_2;
hello;

code_boock_3;
world;
code_block_4;
world;

?

谢谢!

推荐答案

宏不能重新定义其他宏,但是你可以手动完成.

Macros cannot redefine other macros, but you can do it manually.

#define FOO hello

FOO // expands to hello

#undef FOO
#define FOO world

FOO // expands to world

#undef FOO
#define FOO blah

FOO // expands to blah

不幸的是,#define + #undef 组合无法封装在我知道的任何其他结构中.

Unfortunately, the #define + #undef combination cannot be encapsulated in any other structure that I am aware of.

这篇关于带内存的 C++ 宏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆