Эта ошибка означает, что символ (основа) определен в более чем одном модуле.
Вы можете объявить символ в любом количестве модулей. объявление функции выглядит так:
int stem(char * p, int i, int j);
Вам не нужно ключевое слово "extern", хотя оно ничего не ранит. Для объявлений функций это подразумевается.
A определение функции выглядит так:
int stem(char * p, int i, int j)
{
/* body of your function */
}
Ошибка «множественное определение» означает, что у вас есть два модуля с определением для одной и той же функции. Обычно это означает, что у вас есть два файла, которые определяют функцию, или два файла, которые #include файл, который определяет функцию. Обычно вы не должны помещать определения функций в файлы, которые вы #include. Поместите определение в файл .c, .cpp или .cc и просто поместите объявление в файл .h, который вы # включаете.
Например, вы можете создать файл stem.h со следующим:
int stem(char * p, int i, int j);
Тогда #include "stem.h"
.