Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ typedef能维持多久?_C++ - Fatal编程技术网

C++ typedef能维持多久?

C++ typedef能维持多久?,c++,C++,我在一个函数中有一个宏,它实例化给定类型的变量,并执行一些其他不相关的操作 从本质上讲,f扩展为f 但是如果foo是std::map,那么扩展会由于额外的逗号而失败 我通过编写typedef std::map bar来解决这个问题;然后是宏条,b 我担心我正在将typedef泄漏到程序源代码中,这可能会在将来给我带来问题 那么,typedef能持续多久?typedef可用性规则与变量的规则相同,因此在您的情况下,它将持续函数体的时间 你可以自己写一封信来证实这一点 {typedef std::m

我在一个函数中有一个宏,它实例化给定类型的变量,并执行一些其他不相关的操作

从本质上讲,f扩展为f

但是如果foo是std::map,那么扩展会由于额外的逗号而失败

我通过编写typedef std::map bar来解决这个问题;然后是宏条,b

我担心我正在将typedef泄漏到程序源代码中,这可能会在将来给我带来问题

那么,typedef能持续多久?

typedef可用性规则与变量的规则相同,因此在您的情况下,它将持续函数体的时间

你可以自己写一封信来证实这一点

{typedef std::map location_map;}

观察编译器错误:只要作用域块存在,typedef本身就超出了作用域。

typedef可用性规则与变量的规则相同,因此在您的情况下,它将持续函数体的时间

你可以自己写一封信来证实这一点

{typedef std::map location_map;}

观察编译器错误:只要作用域块存在,typedef本身就超出了作用域。

typedef将持续到全局作用域或命名空间作用域中的翻译单元结束

或放在其他作用域中时作用域的结尾。

typedef持续到全局作用域或命名空间作用域中转换单元的结尾


或者当放入另一个作用域时,作用域的结尾。

您可能会在阅读关于等待的内容时发现一些用处,所以您是说typedef std::map foo;MACROfoo,f不编译?我觉得很难相信。顺便说一句,做一些其他不相关的事情是一个很常见的误解。如果它与这个问题有关,就没有什么不相关的了。如果您的问题涉及到宏,那么请向我们展示宏或与该问题表现出相同行为的摘要版本,但请不要声称它不相关。不,它确实编译,但MACROstd::map,f不可能。您可能想查看此问题:您可能会在阅读关于等待的内容时发现一些用处,你是说typedef std::map foo;MACROfoo,f不编译?我觉得很难相信。顺便说一句,做一些其他不相关的事情是一个很常见的误解。如果它与这个问题有关,就没有什么不相关的了。如果您的问题涉及宏,请向我们展示宏或与该问题表现出相同行为的摘要版本,但请不要声称它不相关。不,它确实编译,但MACROstd::map,f不可能您想查看此问题: