, поскольку я хочу теперь создавать большие проекты на C ++, я подумал о том, чтобы разделить мой код на файлы заголовка / cpp. Но у меня возникают проблемы с компиляцией, потому что я неправильно использую несколько #include
.
main. cpp
#include"device.h"
#include"checksum.h"
int main()
device.h
#pragma once
#include "structures.h"
void getDevice(); /* pcpa_if_t* dev */
void openDevice();/* pcap_t* handle */
void applyFilter(const char* filter_exp); /* compiles and applies */
. cpp
#include "device.h"
pcap_if_t* alldevs;
pcap_if_t* dev;
pcap_t* handle;
struct bpf_program fp;
bpf_u_int32 mask;
bpf_u_int32 net;
char filter_exp[] = "ip";
char errbuf[PCAP_ERRBUF_SIZE];
void getDevice() { ...
структура.h
#pragma once
#include<iostream>
#include<pcap.h>
#include <inttypes.h>
#define SNAP_LEN 1518 ...
контрольная сумма. cpp
#include "checksum.h"
контрольная сумма.h
#pragma once
#include "structures.h"
Этот код не компилируется, проблема в checkum.h cpp, я не знаю почему. Должен ли я свободно использовать библиотечные включения при необходимости или мне нужно изменить структуру cern для большей эффективности? Включает ли go в заголовок или cpp файл, имеет ли это значение? Является ли хорошей практикой использовать прагму один раз для всех заголовков? На простых примерах я в порядке, но у меня возникают очень быстрые проблемы при работе с большим количеством заголовков и cpp файлов.
Ошибка компилятора: функции уже определены.