また: このコードは意味がありますか? (私はCに慣れていないので、よくわかりません)
char*s1 = derp[0];
char*s2 = derp[1];
derp は char へのポインターの配列 (つまり、文字列の配列) であると感じており、配列から 2 つの文字列を取得しようとしています。ただし、これら 2 つの char* を関数 (プロトタイプが FindMaxOverlap(char*long, char*short) である関数) に渡そうとすると、FindMaxOverlap 関数の暗黙的な定義があるというエラーがコンパイラからスローされます)。