在 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 - 是不是可以同时为调试和发布配置设置预处理器定义?

Visual Studio Professional 是不是支持 Perl?

visual studio 2017许可证已过期怎么解决?

深入研究Visual studio 2017 RC新特性

MVVM 是不是会停止 Visual Studio 设计器显示 xaml 的能力?