typedef持续多长时间?

时间:2015-12-17 09:49:06

标签: c++

我在一个函数中有一个宏来实例化一个给定类型的变量(并做一些其他不相关的事情)。

基本上TryRotateAsyc扩展为MACRO(foo, f)

但如果foo f;foo,那么由于额外的逗号,扩展会失败。

我通过编写std::map<int, int>后跟typedef std::map<int, int> bar;来解决此问题。

我很担心我将MACRO(bar, b)泄漏到程序源中,这可能会在将来导致我出现问题。

那么,typedef持续多长时间?

2 个答案:

答案 0 :(得分:7)

typedef可用性的规则与变量的规则相同,因此在您的情况下,它将“#34;}&#34;只要功能体。

您可以通过编写

自行验证

{typedef std::map<std::string, std::string, iLT> location_map;}

并观察编译器错误:只要范围块存在,typedef本身就超出了范围。

答案 1 :(得分:3)

typedef一直持续到全局范围或命名空间范围内的翻译单元结束。

或放入其他范围内的范围结束。