Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Я оставлю бесконечный цикл в конструкторе по одной причине:
Я продолжу писать код в заголовочных файлах по ряду причин:…
Те кто уверен, что так как я делать нельзя — можете поучить программированию создателей stl и boost сначала, а потом переименовать файл server.h в server.cpp и будет всем хорошо…
#include <algorithm>
#include <cstring>
void f(char *dst, const char *src, size_t length) {
std::copy(src, src + length, dst);
}
void g(char *dst, const char *src, size_t length) {
std::memcpy(dst, src, length);
}
/tmp/tmpi3vn0y.o: file format elf64-x86-64-freebsd
Disassembly of section .text:
0000000000000000 <_Z1fPcPKcm>:
0: 55 push rbp
1: 48 89 e5 mov rbp,rsp
4: e8 00 00 00 00 call 9 <_Z1fPcPKcm+0x9>
9: 5d pop rbp
a: c3 ret
b: 0f 1f 44 00 00 nop DWORD PTR [rax+rax+0x0]
0000000000000010 <_Z1gPcPKcm>:
10: 55 push rbp
11: 48 89 e5 mov rbp,rsp
14: e8 00 00 00 00 call 19 <_Z1gPcPKcm+0x9>
19: 5d pop rbp
1a: c3 ret
int main()
{
std::vector<unsigned char> v1(10), v2(10);
for (int n=0; n<v1.size(); n++)
{
v1[n] = n;
}
std::copy(&v2[0], &v2[v2.size() - 1], &v1[0]);
memcpy(&v2[0], &v1[0], v2.size());
return 0;
}
std::copy(&v2[0], &v2[v2.size() - 1], &v1[0]);
01371088 mov ebx,dword ptr [v2]
0137108B mov esi,dword ptr [ebp-24h]
0137108E sub esi,ebx
01371090 lea eax,[esi-1]
01371093 push eax
01371094 push ebx
01371095 push edi
01371096 call dword ptr ds:[13720A0h]
memcpy(&v2[0], &v1[0], v2.size());
0137109C push esi
0137109D push edi
0137109E push ebx
0137109F call _memcpy (01371AAAh)
server.h:77:8: error: `server::CClient::m_pSSL` will be initialized after в списке инициализации m_pSSL должно стоять после m_pSSLContext, поскольку оно объявлено ниже в классе. Причина, по которой вам это может быть полезным.server.h:300:45: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
if (strInputString.find("\r\n\r\n") != -1)
string::find возвращает не -1 в случае отсутствия элемента, а string::npos../server.h:446:10: error: logical not is only applied to the left hand side of this comparison [-Werror,-Wlogical-not-parentheses]
if (!m_events[i].events == EPOLLIN)
if (m_events[i].events != EPOLLIN)#!/bin/sh
g++ ...
rm *.o *.gch ...
std::shared_ptr<std::map<std::string, std::vector<std::string>>>
using namspace std;
shared_ptr<map<string, vector<string> > >
что делают строки вида "#define EPOLLIN EPOLLIN". Можете пояснить?Скорее всего, когда-то давно enum не было, а константы были объявлены через #define
#define EPOLLIN 0x001
#ifndef EPOLLIN
#define EPOLLIN 1
#endif
...
foo(EPOLLIN );
...
Кроссплатформенный https сервер с неблокирующими сокетами. Часть 3