использование функции MAKEWORD создает ошибку E0109 - выражение, предшествующее круглым скобкам видимого вызова, должно иметь (указатель на) тип функции - PullRequest
1 голос
/ 28 июня 2019

Я пишу проект, используя 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, если это что-то изменит.Я пытался решить это во многих отношениях, кажется, ничего не работает.

1 Ответ

0 голосов
/ 29 июня 2019

Проблема заключалась в использовании define перед моим кодом. Спасибо:)

...