在 Visual Studio 2017 中,是不是有一种快速方法可以将“std::”添加到缺少它的名称中?
Posted
技术标签:
【中文标题】在 Visual Studio 2017 中,是不是有一种快速方法可以将“std::”添加到缺少它的名称中?【英文标题】:In Visual Studio 2017, is there a fast way to add "std::" to names that lack it?在 Visual Studio 2017 中,是否有一种快速方法可以将“std::”添加到缺少它的名称中? 【发布时间】:2017-09-10 04:10:27 【问题描述】:我有一个最初是用using namespace std;
设计的项目。因此,无需在名称前附加 std::
即可访问 std
中的名称。
但是,由于需要在代码中消除与参数相关的查找和名称冲突的歧义,一些名称已经在前面添加了 std::
。
例如:
unique_ptr<uint8_t[]> token = make_unique<uint8_t[]>(count);
/* some other code */
process(std::forward<T>(tmp_map));
假设我的代码当前处于工作状态(即不使用std::
的当前代码引用预期对象,无论是否在std
中),是否有办法将std::
添加到所有缺少它的名称,比手动检查代码中的每个名称要快吗?
IDE 可能需要能够在某种程度上理解代码(而不仅仅是进行文本查找/替换),但 Visual Studio 具有 Intellisense - 我可以利用它或其他方式来完成我的任务吗?
即使它修复了大多数(但不是全部)事件,我也会很高兴,但有人知道这样做的方法吗?
【问题讨论】:
这种事情可以通过为clang编写代码来完成,但这不是微不足道的,我不知道在VS中有什么方法可以做到 【参考方案1】:试试这个:
首先将所有using namespace std;
替换为。然后为您的项目使用的 STL 中的每个
_type_
执行以下操作:
_type_
替换为std::_type_
将所有std::std::
替换为std::
【讨论】:
嗯,这应该适用于所有未在任何其他命名空间中定义的_type_
s,也适用于make_unique
等函数。
如果_type_
也在另一个命名空间_foo_
中定义,您需要将所有_foo_::std::_type_
替换为_foo_::_type_
。以上是关于在 Visual Studio 2017 中,是不是有一种快速方法可以将“std::”添加到缺少它的名称中?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2017 是不是完全支持 C99?
Visual Studio 2017 - 是不是可以同时为调试和发布配置设置预处理器定义?