【发布时间】:2011-04-30 15:15:11
【问题描述】:
不幸的是,我的库的原始版本遗留了几个宏,这些宏使用了一些非常疯狂的 C。特别是,我有一系列宏,它们期望将某些类型传递给它们。 是否可以按照以下方式做一些事情:
static_assert(decltype(retval) == bool);
怎么做?有什么聪明的替代品吗?
是的,我知道宏很糟糕。我知道 C++ 不是 C 等等。
更新0
这里有一些related code 和source file。欢迎提出建议。原来的问题保持不变。
【问题讨论】:
-
看过实际的宏后,我强烈建议阅读 Modern C++ Design 或 [更多] Exceptional C++。
-
@MSalters:我无法想象 C++ 如何为我的进入/退出提供隐式替代方案,但我会看看。另请注意,写一个 FS 是非常 unmeta 的,我的目标不是创建一些宏大的 C++ 框架。
-
你在入口处把一个对象放在栈上;范围的任何退出都会破坏对象。因此,进入时调用ctor,退出时调用dtor。自动 dtor 调用特别有用,我们从历史中知道,典型的程序员在函数的所有退出中会错过大约 5% 的宏。
标签: c++ c visual-studio-2010 g++ static-assert