无法在 Visual Studio 2019 和 2022 中使用 std::counting_semaphore

Posted

技术标签:

【中文标题】无法在 Visual Studio 2019 和 2022 中使用 std::counting_semaphore【英文标题】:Unable to use std:: counting_semaphore in Visual Studio 2019 and 2022 【发布时间】:2021-10-09 03:23:58 【问题描述】:

所以我尝试在 Visual Studio 2019 和 2022 中使用counting_semaphore,但我得到的只是“std has no membercounting_semaphore”。

在单个组件中添加 clang 11 后,我在 Visual Studio 2019 中进行了尝试,但仍然遇到相同的错误。然后我就觉得它不支持 C++20。所以我想也许这就是它不起作用的原因。

然后我看到 Vs2022 Preview 支持 C++20。所以我安装了它,包括在内,但我仍然无法执行“std::counting_semaphore slot(5);”正如它所说的,std没有一个名为counting semaphore的成员。

我还在 2022 预览版安装程序的各个组件中安装了 clang12,但仍然无法正常工作。

我不确定自己做错了什么。

我在网上看到了例子:

https://www.modernescpp.com/index.php/semaphores-in-c-20 https://en.cppreference.com/w/cpp/thread/counting_semaphore

告诉如何使用它,但是当我将代码放入 vs 时,它就不起作用了。

我可以在#include 上“查看代码”,它显示了counting_semaphore 的实现,但我不能使用它!!!

请有人澄清我做错了什么!!!

【问题讨论】:

"然后我看到 Vs2022 Preview 支持 C++20" - 在哪里?您确定消息来源声称 VS2022 Preview 支持整个 C++20吗?这是非常不可能的。 “不工作”是指它实际上没有编译,还是你的编辑器中出现误报? en.cppreference.com/w/cpp/compiler_support/20 @Fureeish 在 C++20 支持中的 visualstudio.microsoft.com/vs/preview/vs2022 站点上这么说。但它没有说所有功能都支持什么,而是说支持最新的工具链。当我说它不起作用时,我的意思是我得到 std has no membercounting_semaphore。 @Kevin 是的,我看到了,但这并没有帮助,因为我已经安装了 clang11 并使用其中提到的 Visual Studio 版本来使用counting_semaphore。 "当我说它不起作用时,我的意思是我得到 std has no membercounting_semaphore." - 但是你在编辑器中得到那个 (如屏幕截图所示 + 可能当您将鼠标悬停在它上面时)或者您是否编译代码时实际上遇到编译器错误,尽管有错误的视觉指示 【参考方案1】:

你是否设置了c++语言标准?

Property -> General -> C++ Language Standard -> /std: c++ latest

我可以在visual studio 2022 preview 17.0.0 preview 2.0中成功构建。

而且我也可以在 Visual Studio 2019 中成功构建。

【讨论】:

@SiddharthShekar 感谢您对我们提供的帮助感到满意。如果您的案例已经解决,请帮忙标记答案。 @SiddharthShekar 您可以点击答案前面的“检查”。

以上是关于无法在 Visual Studio 2019 和 2022 中使用 std::counting_semaphore的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 Visual Studio 2019 中定位 .Net Framework

无法在 Visual Studio 2019 中使用诊断工具

无法在 Visual Studio 2019 中打开 Service Fabric 项目

Visual Studio 2019 IntelliSense 无法识别更改的值

Visual Studio 2019 MVC 项目模板无法编译

更新到 2020 年 5 月版本后无法在 Visual Studio 2019 中创建 .exe 文件