Я пишу проект, используя cpp, sockets, json и winsock2 для создания соединения между сервером и клиентом, я использую функцию WSAStartup из winsock2.h, чтобы установить соединение.Я скопировал способ, которым он используется, из кодов из интернета, и он работал некоторое время, пока внезапно функция MAKEWORD не выдала ошибку.
Вот функция, которую я использовал в ней MAKEWORD: (Communicator, RequestHandelerFactory и m_handlerFactory являются классамиЯ создал, игнорируйте это)
Communicator::Communicator(RequestHandelerFactory* RHF) : m_handlerFactory(RHF)
{
WSADATA wsa_data = {};
if (WSAStartup(MAKEWORD(2, 2), &wsa_data) != 0)
{
throw std::exception("wsa startup failed");
}
std::cout << "Starting..." << std::endl;
_serverSocket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (_serverSocket == INVALID_SOCKET)
{
throw std::exception(__FUNCTION__ " - socket");
}
}
Используемые мной включения и определения:
#pragma warning(disable : 4996)
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <WinSock2.h>
#include <WS2tcpip.h>
#include <stdio.h>
#include <sstream>
#include <bitset>
#include <exception>
#include <minwindef.h>
#include <windef.h>
#include <ctime>
//some more includes from code I wrote
#pragma comment (lib, "ws2_32.lib")
Ошибка появляется в функции MAKEWORD, и независимо от того, что я делаю, она все равно даетта же ошибка.
E0109 expression preceding parentheses of apparent call must have (pointer-to-) function type
Я использую Visual Studio 2017, если это что-то изменит.Я пытался решить это во многих отношениях, кажется, ничего не работает.