Это код функции разгрузки.Как отлаживать «неопределенную ссылку» в моей функции выгрузки C?
bool unload(void)
{
void release_nodes (node* node_to_free);
//looking for children node to free
for (int i = 0; i < 27; i++)
{
if (node_to_free -> children[i])
{
release_nodes (node_to_free -> children[i]);
}
}
free (node_to_free);
return false;
}
Это ответ, который я получаю при компиляции.
clang -ggdb3 -O0 -Qunused-arguments -std=c11 -Wall -Werror -c -o speller.o speller.c
clang -ggdb3 -O0 -Qunused-arguments -std=c11 -Wall -Werror -c -o dictionary.o dictionary.c
clang -ggdb3 -O0 -Qunused-arguments -std=c11 -Wall -Werror -o speller speller.o dictionary.o
dictionary.o: In function `unload':
/home/ubuntu/workspace/pset5/speller/dictionary.c:170: undefined reference to `release_nodes'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [speller] Error 1
И где определено 'release_nodes'? В каком исходном файле? Вы строите с этим файлом? –
Кроме того, объявление функции внутри другой функции, вероятно, не является тем, что вы хотите (хотя это неверно). Лучше переместить объявление в некоторый заголовочный файл. – ForceBru
Похоже, что это должно быть определение функции 'release_nodes()'. 'unload()' должна быть отдельной функцией, которая вызывает 'release_nodes()' с корневым узлом в качестве аргумента. – Barmar