#nomaros (EP003) 是什么,它还活着吗?
2004 年 2 月 14 日的 Evolution WG 问题列表< /a> 有...
EP003。 #nomacros。 参见 EI001。 注释者 Stroustrup 待编写。
粗略(或准确)地说,什么是#nomaros
,它可以作为扩展在任何地方使用吗? 与通过预处理器运行代码并检查 .i 文件中是否存在意外包的替代方案相比,在最近的一个涉及将 1995 年老式 C++ 文件移植到 2005 年编译器的项目中,它是一个有用的诊断工具。
The Evolution WG Issues List of 14 February 2004 has ...
EP003. #nomacros. See EI001. Note by
Stroustrup to be written.
In rough (or exact) terms, what is #nomacros
, and is it available as an extension anywhere? It would have been a useful diagnostic tool in a recent project involving porting thousands of files of 1995-vintage C++ to a 2005 compiler, compared to the alternative of running the code through the preprocessor and examining the .i files for surprise packages.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这只是一个正在积极考虑纳入 C++ 的提案,但在当前的编译器中仍然不可用。 如果您继续阅读该页面,它会显示:
ES042。 #没有垃圾邮件。
提供用于限制宏进入和退出作用域的预处理器机制。 例如:
除非由 #in 显式启用,否则不会在 #nomacros 和 #endnomacros 之间展开任何宏。 #nomacros 和 #endnomaros 之间定义的宏不会在 #endnomaros 之后定义,除非由 #out 显式启用。
Bjarne Stroustrup 的建议。 经过 EWG 的讨论,决定寻找一种解决方案,允许“#in”允许的宏所使用的宏仅用于此类宏的扩展。
#nomaros 应该嵌套。
It is just a proposal under active consideration for inclusion into C++, but still not available in the current compilers. If you read further down the page, it says:
ES042. #nospam.
Provide a preprocessor mechanism for limiting macros entering and exiting a scope. For example:
No macros are expanded between #nomacros and #endnomacros unless explicitly enabled by #in. No macros defined between #nomacros and #endnomacros will be defined after #endnomacros unless explicitly enabled by #out.
Suggestion by Bjarne Stroustrup. After discussion in the EWG it was decided to look for a solution that allowed macros used by macros allowed in by “#in” to be used in the expansion of such macros only.
#nomacros should nest.