Заголовок темы не включая - mingw64, C++ 20 ⇐ C++
Заголовок темы не включая - mingw64, C++ 20
У меня есть класс Timer, реализованный с использованием потоков и мьютекса:
#pragma один раз #include "Common.hpp" //только файлы заголовков SDL #include #include #include класс CallbackDelegate; пространство имен Util { класс Таймер { публика: структура CallbackDelegate { класс друга Таймер; частный: CallbackDelegate(void (*f)(), int bt, int ftd, int ltd, bool lp, bool ofl): func(f), BeginTime(bt), firstTimeDelay(ftd),loopTimeDelay(ltd),loop(lp), onFirstLoop(ofl) {} CallbackDelegate(CallbackDelegate* другое) { func = другое-> func; firstTimeDelay = другое->firstTimeDelay; BeginTime = SDL_GetTicks(); циклTimeDelay = другое->loopTimeDelay; цикл = другое-> цикл; onFirstLoop = другое->onFirstLoop; } пустота (* функция)(); интервал начала времени; ИНТ FirstTimeDelay; интервал циклаTimeDelay; логический цикл; bool onFirstLoop; }; частный: std::vector activeStopwatches; std::vector activeCallbacks; std::thread timerThread; std::блокировка мьютекса; публика: Таймер(); ~Таймер(); uint8_t BeginStopwatch() { activeStopwatches.emplace_back(SDL_GetTicks()); вернуть activeStopwatches.size(); } uint8_t BeginWithCallback (делегат CallbackDelegate*); inline int getTime(uint8_t id) {return SDL_GetTicks() - activeStopwatches.at(id);} inline int endStopwatch(uint8_t id) {activeStopwatches.erase(activeStopwatches.begin() + id);} недействительное обновление(); [[nodiscard]] Util::Timer::CallbackDelegate* makeNewLoopedDelegate(void (*func)(), int firstTimeDelay, intloopTimeDelay=-1); [[nodiscard]] Util::Timer::CallbackDelegate* makeNewDelegate(void (*func)(), int Delay); }; } Я получаю эту ошибку и не знаю почему.
include/Timer.hpp:47:4: примечание: 'std::thread' определяется в заголовке ''; ты забыл «#include »? включить/Timer.hpp:5:1: +#include Это моя система сборки:
g++ -c src/*.cpp -std=c++2a -pthread -O3 -Wall -w -m64 -I include -I C:/x86_64-w64-mingw32/include< /п> Почему я получаю эту ошибку? Я порылся в файлах mingw и обнаружил заголовок потока/мьютекса, я использую флаг компилятора C++ 20, -pthread и включаю его с помощью "#include".
Вот простой пример, который тоже не работает
test.cpp
#include интервал основной() { std::thread поток; } Создано с помощью:
g++ test.cpp
Получаю ту же ошибку:
test.cpp: В функции int main(): test.cpp:5:10: ошибка: «поток» не является членом «std» std::thread поток; ^~~~~~ test.cpp:5:10: примечание: 'std::thread' определен в заголовке ''; ты забыл «#include »? test.cpp:2:1: +#include test.cpp:5:10: std::thread поток;
У меня есть класс Timer, реализованный с использованием потоков и мьютекса:
#pragma один раз #include "Common.hpp" //только файлы заголовков SDL #include #include #include класс CallbackDelegate; пространство имен Util { класс Таймер { публика: структура CallbackDelegate { класс друга Таймер; частный: CallbackDelegate(void (*f)(), int bt, int ftd, int ltd, bool lp, bool ofl): func(f), BeginTime(bt), firstTimeDelay(ftd),loopTimeDelay(ltd),loop(lp), onFirstLoop(ofl) {} CallbackDelegate(CallbackDelegate* другое) { func = другое-> func; firstTimeDelay = другое->firstTimeDelay; BeginTime = SDL_GetTicks(); циклTimeDelay = другое->loopTimeDelay; цикл = другое-> цикл; onFirstLoop = другое->onFirstLoop; } пустота (* функция)(); интервал начала времени; ИНТ FirstTimeDelay; интервал циклаTimeDelay; логический цикл; bool onFirstLoop; }; частный: std::vector activeStopwatches; std::vector activeCallbacks; std::thread timerThread; std::блокировка мьютекса; публика: Таймер(); ~Таймер(); uint8_t BeginStopwatch() { activeStopwatches.emplace_back(SDL_GetTicks()); вернуть activeStopwatches.size(); } uint8_t BeginWithCallback (делегат CallbackDelegate*); inline int getTime(uint8_t id) {return SDL_GetTicks() - activeStopwatches.at(id);} inline int endStopwatch(uint8_t id) {activeStopwatches.erase(activeStopwatches.begin() + id);} недействительное обновление(); [[nodiscard]] Util::Timer::CallbackDelegate* makeNewLoopedDelegate(void (*func)(), int firstTimeDelay, intloopTimeDelay=-1); [[nodiscard]] Util::Timer::CallbackDelegate* makeNewDelegate(void (*func)(), int Delay); }; } Я получаю эту ошибку и не знаю почему.
include/Timer.hpp:47:4: примечание: 'std::thread' определяется в заголовке ''; ты забыл «#include »? включить/Timer.hpp:5:1: +#include Это моя система сборки:
g++ -c src/*.cpp -std=c++2a -pthread -O3 -Wall -w -m64 -I include -I C:/x86_64-w64-mingw32/include< /п> Почему я получаю эту ошибку? Я порылся в файлах mingw и обнаружил заголовок потока/мьютекса, я использую флаг компилятора C++ 20, -pthread и включаю его с помощью "#include".
Вот простой пример, который тоже не работает
test.cpp
#include интервал основной() { std::thread поток; } Создано с помощью:
g++ test.cpp
Получаю ту же ошибку:
test.cpp: В функции int main(): test.cpp:5:10: ошибка: «поток» не является членом «std» std::thread поток; ^~~~~~ test.cpp:5:10: примечание: 'std::thread' определен в заголовке ''; ты забыл «#include »? test.cpp:2:1: +#include test.cpp:5:10: std::thread поток;
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как получить точный отчет о покрытии кода с помощью gcovr для проекта MSYS2 MINGW64 Clang?
Anonymous » » в форуме C++ - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-