Мы пытаемся реализовать оболочку bash в c для нашего проекта.Прямо сейчас я делаю функцию addAlias и ее основанную на нашей функции AddToken (которая заполняет нашу структуру strArray).
Структура strArray имеет ** char (строковый массив) и int для числа токеновв массиве.Точно так же структура aliasArray имеет два ** char и int для числа псевдонимов.Реализация была почти идентична, поэтому я не понимаю, откуда исходит ошибка в функции addAlias.
Я уже пытался искать в стеке и перемещать код, но я понятия не имею, что его вызвало.
это из заголовочного файла:
typedef struct
{
char** shortcuts;
char** notshort;
int numaliases;
} aliasArray;
void addAlias(aliasArray* instr_ptr, char* short, char* long);
это функция из файла c, которая должна заполнять два массива ярлыком и его псевдонимом, заданным параметрами соответственно:
void addAlias(aliasArray* instr_ptr, char* short, char* long)
{
//extend token array to accomodate an additional token
if (instr_ptr->numaliases == 0)
{
instr_ptr->shortcuts = (char**) malloc(sizeof(char*));
instr_ptr->notshort = (char**) malloc(sizeof(char*));
}
else
{
instr_ptr->shortcuts = (char**) realloc(instr_ptr->shortcuts, (instr_ptr->numaliases+1) * sizeof(char*));
instr_ptr->notshort = (char**) realloc(instr_ptr->notshort, (instr_ptr->numaliases+1) * sizeof(char*));
}
//allocate char array for new token in new slot
instr_ptr->shortcuts[instr_ptr->numaliases] = (char *)malloc((strlen(short)+1) * sizeof(char));
instr_ptr->notshort[instr_ptr->numaliases] = (char *)malloc((strlen(long)+1) * sizeof(char));
strcpy(instr_ptr->shortcuts[instr_ptr->numaliases], short);
strcpy(instr_ptr->shortcuts[instr_ptr->numaliases], long);
instr_ptr->numaliases++;
}
и это объявления нашей основной функции: aliasArray aliases;
aliases.shortcuts = NULL;
aliases.notshort = NULL;
aliases.numaliases = 0;
это весь код, который я добавил для этой части, и когда я пытаюсьзакомментируйте это и запустите все с помощью gcc -g, я получаю несколько не связанных предупреждений, но все работает нормально.Когда он не закомментирован и я пытаюсь его запустить, я получаю следующие ошибки:
In file included from commandler.c:1:0:
commandler.h:17:44: error: expected â;â, â,â or â)â before âshortâ
void addAlias(aliasArray* instr_ptr, char* short, char* long);
^
commandler.c:295:44: error: expected â;â, â,â or â)â before âshortâ
void addAlias(aliasArray* instr_ptr, char* short, char* long)