带内存的 C++ 宏?

标签 c++ macros

是否可以定义宏

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;

?

谢谢!

最佳答案

宏不能重新定义其他宏,但您可以手动进行。

#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 组合不能封装在我所知道的任何其他结构中。

关于带内存的 C++ 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2506167/

相关文章:

delphi - 使用 DWScript 创建宏

rust - 为什么我不能通过 `std::assert` 导入 `use` 而它适用于来自 std 的其他宏?

c++ - 如何避免重复

c++ - 在 gtest 中显示失败的函数而不是宏

c++ - 在 C++ 中将 float 转换为本地化字符串

C++友元函数

c++ - g++ 链接问题 : undefined reference to functions

c++ - 如何增加 QString 中的字符 (Qt)

c++ - 从宏参数中提取子集

c - 宏展开后的输出似乎不符合理解(可能是错误的理解)