3

2004 年 2 月 14 日的Evolution WG 问题清单...

EP003。#nomacros。见 EI001。由 Stroustrup 撰写的笔记。

粗略(或准确)地说,什么是#nomacros,它是否可以作为扩展在任何地方使用?在最近的一个项目中,它将数千个 1995 年的 C++ 文件移植到 2005 编译器中,这将是一个有用的诊断工具,与通过预处理器运行代码并检查 .i 文件以查找意外包的替代方案相比。

4

1 回答 1

1

它只是一个正在积极考虑纳入 C++ 的提议,但在当前编译器中仍然不可用。如果您进一步阅读该页面,它会说:

ES042。#没有垃圾邮件。

提供一种预处理器机制来限制宏进入和退出作用域。例如:

#nomacros
#in A B
…
#out A X
#endnomacros

除非由#in 明确启用,否则#nomacros 和#endnomacros 之间不会扩展宏。在#nomacros 和#endnomacros 之间定义的宏不会在#endnomacros 之后定义,除非由#out 显式启用。

Bjarne Stroustrup 的建议。在 EWG 中讨论后,决定寻找一种解决方案,允许“#in”允许的宏使用的宏仅用于此类宏的扩展。

#nomacros 应该嵌套。

于 2009-06-29T20:17:00.757 回答