一个typedef能持续多久
How long does a typedef last for?
我在一个函数中有一个宏,它实例化给定类型的变量(并做一些其他不相关的事情)。
本质上MACRO(foo, f)
扩展为foo f;
但是,如果foo
是std::map<int, int>
,则由于额外的逗号,扩展失败。
我通过写typedef std::map<int, int> bar;
和MACRO(bar, b)
来解决这个问题。
不过,我担心我正在将typedef
泄漏到程序源中,这可能会在将来给我带来问题。
那么,typedef
持续多久?
typedef
可用性的规则与变量的规则相同,因此在您的情况下,它将"持续"到函数体的长度。
你可以通过写自己验证这一点
{typedef std::map<std::string, std::string, iLT> location_map;}
并观察编译器错误:只要作用域块存在,typedef
本身就超出了作用域。
typedef
持续到全局范围或命名空间范围中的翻译单元结束。
或者当放在另一个范围内时范围结束。
相关文章:
- C++ typedef 函数指针,并在一个语句中声明一个指针
- 将一个 typedef 函数指向另一个类中的另一个函数
- 为什么当一个模板类继承自另一个模板类时,需要重新指定 typedef 并限定函数调用?
- typedef 一个向量和 boost::numeric::ublas::vector 的固定大小
- C++:从两个包含子类 (typedef) 的列表创建一个列表
- 课堂上的Typedef.在另一个类错误中:尚未声明类型
- C++ 使用另一个类的 typedef'ed 成员时出现编译错误
- typedef是一个专门的嵌套模板
- typedef 一个包含 const 元素的数组,使用 const ArrayType 或 c++ 中的 ConstAr
- 类模板中的 typedef 的 SFINAE 失败是指另一个类模板中的 typedef
- 具有一个成员或仅typedef的结构
- Typedef是一个具有特定构造函数参数的类
- 一个typedef能持续多久
- typedef是一个可在Windows和Linux上使用的C++函数
- 用C++中的typedef来总结和定义一个具有两个函数的新类型
- 使用单独编译时返回一个typedef类型
- 在接口头文件中使用typedef是一个不好的做法吗?
- 对于类型修改特征,我是否应该为 typename::transform<...>::type 提供一个模板 typedef(又名使用)方便包装器?
- 为什么这个特性类不起作用,来测试一个类是否有某个typedef
- typedef一个包含所有默认参数的模板