编译器看不到 C++11 标识符

Compiler doesn't see the C++11 identifiers

当我尝试构建 Google 测试 c++ 项目时,我遇到了错误

Error   C3861   't1': identifier not found
Error   C2065   't1': undeclared identifier
Error   C2039   'thread': is not a member of 'std'
Error   C2065   'thread': undeclared identifier
Error   C2146   syntax error: missing ';' before identifier 't1'

我的测试代码是:

#include <future>
#include <thread>

#include "pch.h"
TEST(...)
{
    // preconditions here

    std::thread t1([&] {
        Sleep(100);
        testee.enqueue(item);
        });
    
    t1.join();
    
    // other logic
}

为什么我不能在我的项目中使用 std::thread 和其他 C++11 功能?我该怎么做?

Why I cannot use the std::thread and other C++11 features in my project?

潜在原因 1:除非使用 C++11 或更高版本的标准,否则无法使用 C++11 功能。

潜在原因 2:除非包含定义 std::thread 的 header,否则不能使用 std::thread。它在 header <thread>.

中定义

#include "pch.h" 必须是第一个。 #include "pch.h" 之前的其他 #include 指令将被忽略。

关于pch.h,可以参考这个。我在VS2019测试了你上传的代码,代码没有错误。结果如图。

#include <iostream>
#include <future>
#include <thread>
#include<Windows.h>
int main()
{
    std::thread t1([&] {
        Sleep(1000);
        });

    t1.join();
} 

关于C++11的使用,可以在项目属性>配置属性>通用>C++语言标准中设置。我建议你使用C++14,因为C++14已经包含了C++11的特性。