我在一个函数中有一个宏来实例化给定类型的变量(并做一些其他不相关的事情).
基本上MACRO(foo, f)
扩展到foo f;
但是如果foo
说是a std::map
那么由于额外的逗号,扩展失败了.
我通过写作typedef std::map
然后解决这个问题MACRO(bar, b)
.
我很担心,我正在泄漏typedef
程序源,这可能会在将来引起我的问题.
那么,typedef
s持续多久了?
typedef
可用性规则与变量规则相同,因此在您的情况下,它将与函数体一样"持续".
您可以通过写作自己验证
{typedef std::map
并观察编译器错误:只要存在范围块,它typedef
本身就超出了范围.