Моя текущая программа способна подделывать пакеты из сетевых протоколов, которые обычно недоступны в libnet или libpcap.Одна из моих функций сборки использует только необработанные байты для подготовки пакета.Для большей гибкости я определил структуру, в которой хранятся все мои буферы необработанных данных, поэтому я могу иметь быстрый доступ к ним.Определение структуры выглядит следующим образом:
//struct for a smb-ipc request
struct menu_smb_request{
uint8_t *nepgrotdial_lin[414]; //size 414
uint8_t *nepgrotdial_win[274]; //size 274
uint8_t *setupx_req_lin[346]; //size 346
uint8_t *setupx_req_lin2[1162]; //size 1162
uint8_t *conx_req_lin[210]; //size 210
uint8_t *trans2_req_lin[210]; //size 210
};
typedef struct menu_smb_request menu_smb_req;
Структура для удобства доступа определена в самописном заголовочном файле.В другом заголовочном файле я написал функции конструктора, которые используют эту структуру в качестве источника данных.Сначала определяется структура, затем она передается функции-заполнителю, чтобы каждый раз заполнять структуру одними и теми же данными.Затем структура используется в функции конструктора:
int smbcust(int mid, int order) {
menu_smb_req menutob;
int smblen=0;
menubuilder(menutob);
//the structure's contents are used based on the function input
Функция-заполнитель void menubuilder () выглядит следующим образом:
void menubuilder(struct smb_request_menu menutob) {
menutob.nepgrotdial_lin = rbytetoint(very_long_byte_string) //this
//basically
//and so on //translates
} //bytes of
//data into
//uint8_t
Когда я пытаюсь скомпилировать простую программуиспользуя функцию smbcust () (, constructor-), я получаю следующие сообщения об ошибках:
error: type of formal parameter 1 is incomplete
menubuilder(menutob);
error: parameter 1 (‘menutob’) has incomplete type
void menubuilder(struct smb_request_menu menutob) {
Теперь я попытался инициализировать мой struct menutob с помощью "struct menu_smb_req menutob" вместо просто "menu_smb_req"Я снова и снова проверял type-o, я записал структуру в тот же файл заголовка, что и функция, я написал структуру без размеров буфера (только указатели) и проверил порядок включенных заголовков.Что я делаю неправильно?Или есть даже более эффективный способ хранения моих данных?Я осознаю тот факт, что структура должна заполняться каждый раз, я вызываю функцию-конструктор, но, по крайней мере, мне не нужно каждый раз писать этот конструктор и заполнитель.Заранее спасибо и, пожалуйста, прокомментируйте, если требуется более подробная версия моего заголовочного файла.