в файле preprocessor.h есть #include <mutex>. В чём проблема?
#pragma once
#ifndef _SAFE_DEQUE_H_
#define _SAFE_DEQUE_H_
#include "preprocessor.h"
namespace network
{
template <typename T>
class SafeDeque
{
std::mutex mMutex;
std::deque<T> mRawDeque;
public:
void push_front(const T& item)
{
const std::lock_guard<const std::mutex> lock(mMutex);
mRawDeque.push_front(item);
}
```
preproccessor.h:
#pragma once
#ifndef _PREPROCESSOR_H_
#define _PREPROCESSOR_H_
#ifdef _WIN32
#ifndef _WIN32_WINNT 0x0A00
#define _WIN32_WINNT 0x0A00
#endif // _WIN32_WINNT 0x0A00
#endif // _WIN32
#include "connection.h"
#include "message.h"
#include "safeDeque.h"
#ifndef ASIO_STANDALONE
#define ASIO_STANDALONE
#endif // ASIO_STANDALONE
#include <asio.hpp>
#include <deque>
#include <thread>
#include <memory>
#include <string>
#include <vector>
#include <mutex>
#include <algorithm>
#endif // _PREPROCESSOR_H_
```
Pragma once и инклюд гарды? Интересный выбор
предположу что у тебя циклические инклуды
Ну, pragma может не работать на каких-то кампиляторах, вроже.
У меня везде же стоят #pragma once и гарды.
так ифдефы работают точно
)))) она на работала на версии gcc, которой уже лет 12, вроде
не знаю таких, но зачем тогда pragma?
Не надо выносить инклюды в один хедер, это ужасно
А если у меня общий хэдер есть, то как мне не выносить?
так в каждом хэдере свои заголовки, нет?
вообще забудь про это и не парься
тсссс
Это норма. Тоже так делал как-то для очень старых компилей
Обсуждают сегодня