Для чего нужны файлы заголовков .h ?

Начинающий
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
62
Реакции[?]
2
Поинты[?]
0
Для чего нужен .h, если можно использовать только .cpp. Как работать с .h файлами, в совокупности с .cpp ? Просто я привык делать только с .cpp, с .h не было дел.
 
Последнее редактирование:
ᴘʏᴛʜᴏɴ ʟᴏᴠᴇ
Начинающий
Статус
Оффлайн
Регистрация
1 Янв 2019
Сообщения
207
Реакции[?]
27
Поинты[?]
0
Во всех читах, в исходниках я вижу и .h и .cpp, для чего они? по-подробней пожалуйста!)
В программировании заголовочный файл(
Пожалуйста, авторизуйтесь для просмотра ссылки.
header file) или подключаемый файл — файл, содержимое которого автоматически добавляется
Пожалуйста, авторизуйтесь для просмотра ссылки.
в
Пожалуйста, авторизуйтесь для просмотра ссылки.
в том месте, где располагается некоторая
Пожалуйста, авторизуйтесь для просмотра ссылки.
({$I file.inc} в
Пожалуйста, авторизуйтесь для просмотра ссылки.
, #include <file.h> в Си).

В языках программирования
Пожалуйста, авторизуйтесь для просмотра ссылки.
и
Пожалуйста, авторизуйтесь для просмотра ссылки.
заголовочные файлы — основной способ подключить к программе
Пожалуйста, авторизуйтесь для просмотра ссылки.
, структуры,
Пожалуйста, авторизуйтесь для просмотра ссылки.
,
Пожалуйста, авторизуйтесь для просмотра ссылки.
и
Пожалуйста, авторизуйтесь для просмотра ссылки.
, используемые в другом модуле.
Пожалуйста, авторизуйтесь для просмотра ссылки.
используется
Пожалуйста, авторизуйтесь для просмотра ссылки.
.h; иногда для заголовочных файлов языка
Пожалуйста, авторизуйтесь для просмотра ссылки.
используют расширение .hpp.

Чтобы избежать повторного включения одного и того же кода, используются директивы #ifndef, #define, #endif.

Заголовочный файл в общем случае может содержать любые конструкции
Пожалуйста, авторизуйтесь для просмотра ссылки.
, но на практике исполняемый код (за исключением
Пожалуйста, авторизуйтесь для просмотра ссылки.
в
Пожалуйста, авторизуйтесь для просмотра ссылки.
) в заголовочные файлы не помещают. Например,
Пожалуйста, авторизуйтесь для просмотра ссылки.
, которые должны быть объявлены более чем в одном файле, удобно описать в заголовочном файле, а затем его подключать по мере надобности. Подобным же образом работает
Пожалуйста, авторизуйтесь для просмотра ссылки.
и в большинстве
Пожалуйста, авторизуйтесь для просмотра ссылки.
.

По сложившейся традиции, в заголовочных файлах объявляют функции
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
и
Пожалуйста, авторизуйтесь для просмотра ссылки.
.

В других языках (например, в
Пожалуйста, авторизуйтесь для просмотра ссылки.
) применяется развитая система модулей. Но и в них заголовочные файлы имеют определённую ценность. Дело в том, что два файла (основной и заголовочный) сливаются в одну
Пожалуйста, авторизуйтесь для просмотра ссылки.
, и поэтому заголовочный файл может содержать
Пожалуйста, авторизуйтесь для просмотра ссылки.
, незаконченные синтаксические конструкции.
 
Пользователь
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
481
Реакции[?]
140
Поинты[?]
3K
Если в кратце, то много для чего. Например объявление прототипов функций, как в частности. Для макросов, структур, некоторых классов и т.п.
 
Новичок
Статус
Оффлайн
Регистрация
28 Июн 2019
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Why do people think they can attempt to "create" their own cheats in a coding language that they don't even near recognize?

C ++ Separate Header and Implementation Files . C ++ classes (and often function prototypes) are normally split up into two files . The header file has the extension of .h and contains class definitions and functions. The implementation of the class goes into the. cpp file .
 
Пользователь
Статус
Оффлайн
Регистрация
30 Июн 2017
Сообщения
332
Реакции[?]
53
Поинты[?]
0
Го сделаю легче.
В основном в .cpp прописаны сами коды функций,а в .h "сдк"
 
Начинающий
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
62
Реакции[?]
2
Поинты[?]
0
Можете помочь( Не обзывайте меня,я знаю, что написал чушь(. Помогите, в чем проблема?
Ошибка: идентификатор не определен. Эта ошибка во всех остальных файлах, где я хочу использовать переменные(например в wallhack.cpp и в triggerbot.cpp. я там пишу #include getoffsets.h, а не .cpp
getoffsets.h
#pragma once
#include <iostream>
#include "MemMan.h"
#include "Offsets.h"
using namespace std;
MemMan mem;

class GetOffsets {
public:
DWORD process = mem.getProcess("csgo.exe");
DWORD client_dll = mem.getModule(process, "client_panorama.dll");
int delay;
float fl;
struct Vector {
public:
float x, y, z;
};
void Get();
};
GetOffsets *getoff = new GetOffsets();

getoffsets.cpp
#include <iostream>
#include <Windows.h>
#include "MemMan.h"
#include "getoffsets.h"
#include "Offsets.h"
using namespace std;
void GetOffsets::Get() {
for(int i=0;i<32;i++){
Vector LocalHeadPos;
DWORD LocalPlayer = mem.readMem<DWORD>(client_dll + hazedumper::dwLocalPlayer);
DWORD PlayerTeam = mem.readMem<DWORD>(LocalPlayer + hazedumper::m_iTeamNum);
DWORD EntityList = mem.readMem<DWORD>(client_dll + hazedumper::dwEntityList + i * 0x10);
DWORD EntityTeam = mem.readMem<DWORD>(EntityList + hazedumper::m_iTeamNum);
DWORD PlayerVelocity = mem.readMem<DWORD>(LocalPlayer + hazedumper::m_vecVelocity);
DWORD CrosshairIndex = mem.readMem<DWORD>(LocalPlayer + hazedumper::m_iCrosshairId);
DWORD CrosshairEntity = mem.readMem<DWORD>(client_dll + hazedumper::dwEntityList + (CrosshairIndex - 1) * 16);
DWORD CrosshairEntityTeam = mem.readMem<DWORD>(CrosshairEntity + hazedumper::m_iTeamNum);
BYTE Flags = mem.readMem<BYTE>(LocalPlayer + hazedumper::m_fFlags);
DWORD Weapon = mem.readMem<DWORD>(LocalPlayer + hazedumper::m_hActiveWeapon);
DWORD WeaponEntity = mem.readMem<DWORD>(client_dll + hazedumper::dwEntityList + ((Weapon & 0xFFF) - 1) * 0x10);
DWORD WeaponIndex = mem.readMem<DWORD>(WeaponEntity + hazedumper::m_iItemDefinitionIndex);
Vector EntityLocation = mem.readMem<Vector>(EntityList + hazedumper::m_vecOrigin);
Vector MyLocation = mem.readMem<Vector>(LocalPlayer + hazedumper::m_vecOrigin);
cout << CrosshairEntityTeam << endl;
double Rasstoyanie = sqrt(pow(MyLocation.x - EntityLocation.x, 2) + pow(MyLocation.y - EntityLocation.y, 2) + pow(MyLocation.z - EntityLocation.z, 2)) * 0.0254;
}


Только без оскорблений( я все еще не опытен.
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
481
Реакции[?]
140
Поинты[?]
3K
Можете помочь( Не обзывайте меня,я знаю, что написал чушь(. Помогите, в чем проблема?
Ошибка: идентификатор не определен. Эта ошибка во всех остальных файлах, где я хочу использовать переменные(например в wallhack.cpp и в triggerbot.cpp. я там пишу #include getoffsets.h, а не .cpp
getoffsets.h
#pragma once
#include <iostream>
#include "MemMan.h"
#include "Offsets.h"
using namespace std;
MemMan mem;

class GetOffsets {
public:
int delay;
float fl;
struct Vector {
public:
float x, y, z;
};
void Get();
};
GetOffsets *getoff = new GetOffsets();

getoffsets.cpp
#include <iostream>
#include <Windows.h>
#include "MemMan.h"
#include "getoffsets.h"
#include "Offsets.h"
using namespace std;
void GetOffsets::Get() {
Vector LocalHeadPos;
DWORD LocalPlayer = mem.readMem<DWORD>(client_dll + hazedumper::dwLocalPlayer);
DWORD PlayerTeam = mem.readMem<DWORD>(LocalPlayer + hazedumper::m_iTeamNum);
DWORD EntityList = mem.readMem<DWORD>(client_dll + hazedumper::dwEntityList + i * 0x10);
DWORD EntityTeam = mem.readMem<DWORD>(EntityList + hazedumper::m_iTeamNum);
DWORD PlayerVelocity = mem.readMem<DWORD>(LocalPlayer + hazedumper::m_vecVelocity);
DWORD CrosshairIndex = mem.readMem<DWORD>(LocalPlayer + hazedumper::m_iCrosshairId);
DWORD CrosshairEntity = mem.readMem<DWORD>(client_dll + hazedumper::dwEntityList + (CrosshairIndex - 1) * 16);
DWORD CrosshairEntityTeam = mem.readMem<DWORD>(CrosshairEntity + hazedumper::m_iTeamNum);
BYTE Flags = mem.readMem<BYTE>(LocalPlayer + hazedumper::m_fFlags);
DWORD Weapon = mem.readMem<DWORD>(LocalPlayer + hazedumper::m_hActiveWeapon);
DWORD WeaponEntity = mem.readMem<DWORD>(client_dll + hazedumper::dwEntityList + ((Weapon & 0xFFF) - 1) * 0x10);
DWORD WeaponIndex = mem.readMem<DWORD>(WeaponEntity + hazedumper::m_iItemDefinitionIndex);
Vector EntityLocation = mem.readMem<Vector>(EntityList + hazedumper::m_vecOrigin);
Vector MyLocation = mem.readMem<Vector>(LocalPlayer + hazedumper::m_vecOrigin);
cout << CrosshairEntityTeam << endl;
double Rasstoyanie = sqrt(pow(MyLocation.x - EntityLocation.x, 2) + pow(MyLocation.y - EntityLocation.y, 2) + pow(MyLocation.z - EntityLocation.z, 2)) * 0.0254;


Только без оскорблений( я все еще не опытен.
скрин ошибок сделай
 
Начинающий
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
62
Реакции[?]
2
Поинты[?]
0

Вложения

  • 71.7 KB Просмотры: 14
  • 64.3 KB Просмотры: 14
  • 58.4 KB Просмотры: 9
Начинающий
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
62
Реакции[?]
2
Поинты[?]
0
во всех файлах есть инклуд файла заголовка, если в файл заголовка getoffsets.h добавить переменные(просто их обьявить), которые обьявляются в getoffsets.cpp, то он напишет, что переменная пустая, в таком духе.
 
Пользователь
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
481
Реакции[?]
140
Поинты[?]
3K
в getoffsets.h измени "GetOffsets *getoff = new GetOffsets();" на "extern GetOffsets *getoff;"
в getoffsets.cpp добавь "GetOffsets *getoff = new GetOffsets();" после всех include'ов
 
Начинающий
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
62
Реакции[?]
2
Поинты[?]
0
в getoffsets.h измени "GetOffsets *getoff = new GetOffsets();" на "extern GetOffsets *getoff;"
в getoffsets.cpp добавь "GetOffsets *getoff = new GetOffsets();" после всех include'ов
Спасибо большое. Твой ответ дал мне понять кое что. Теперь, в других файлах, чтобы получить переменную, я пишу везде getoff->delay. правильно ли я делаю?
то есть, перед каждой переменной, добавляю getoff->
 
Пользователь
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
481
Реакции[?]
140
Поинты[?]
3K
Спасибо большое. Твой ответ дал мне понять кое что. Теперь, в других файлах, чтобы получить переменную, я пишу везде getoff->delay. правильно ли я делаю?
то есть, перед каждой переменной, добавляю getoff->
getoff->delay();
 
Начинающий
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
62
Реакции[?]
2
Поинты[?]
0
так нахуй нам сдался c++ ведь да
Просто я привык работать только с 1 файликом cpp. Мой вопрос был про: зачем добавлять еще 1 файл .h, когда можно все юзать в cpp. Но ответ свой я уже понял.
 
Начинающий
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
62
Реакции[?]
2
Поинты[?]
0

Вложения

  • 28.2 KB Просмотры: 6
единичка
Забаненный
Статус
Оффлайн
Регистрация
28 Сен 2019
Сообщения
233
Реакции[?]
57
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А что это? Кликнуть на ошибку не получается. (Уже перезапускал VS, ошибка не пропадает.)
MemMam mem; прописан только в getoffsets.h
все obj проблемы просматривай, открывая что находится в файле, тоесть не вот так два клика по файлу, а рядом на стрелку с файлом нажимаешь и ищешь нужное, покрайней мере такие вот obj проблемы ищу и исправляю.
 
Пользователь
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
481
Реакции[?]
140
Поинты[?]
3K
все obj проблемы просматривай, открывая что находится в файле, тоесть не вот так два клика по файлу, а рядом на стрелку с файлом нажимаешь и ищешь нужное, покрайней мере такие вот obj проблемы ищу и исправляю.
у него аналогичная проблема с объявлением объекта класса, либо проблема с include'ами
 
единичка
Забаненный
Статус
Оффлайн
Регистрация
28 Сен 2019
Сообщения
233
Реакции[?]
57
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу