Я новичок в программировании на C, и у меня возникли проблемы с пониманием ошибки, возникающей при попытке скомпилировать мою программу. У меня есть следующая программа, которая является довольно простым и который мой профессор говорит правильно:Неопределенная ошибка переменной
#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define BOOL int
extern int x;
extern BOOL do_exp;
int exp_or_log();
main()
{
x = 10;
do_exp = TRUE;
printf("2^%d = %d\n", x, exp_or_log()); //should print 1024
x = 145;
do_exp = FALSE;
printf("log(%d) = %d\n", x, exp_or_log()); //should print 7
}
Но когда я пытаюсь скомпилировать его, я получаю:
"_x", referenced from:
_x$non_lazy_ptr in ccWdLlxk.o
"_exp_or_log", referenced from:
_main in ccWdLlxk.o
_main in ccWdLlxk.o
"_do_exp", referenced from:
_do_exp$non_lazy_ptr in ccWdLlxk.o
ld: symbol(s) not found
я даже не достаточно иметь представление о том, что это значит знать, с чего начать пытаться выяснить проблему. Если у кого-то есть полезное объяснение или даже просто общее представление о том, на что я должен смотреть, чтобы начать пробную съемку, я бы очень признателен.
Где определены 'x',' do_exp' и 'exp_or_log()'? –
Может быть использовано 'boolean' вместо' BOOL' и, вероятно, определено для 'TRUE' и' FALSE' не требуется. – Arun
Использование ** глобальной переменной ** 'do_exp' для управления поведением функции' exp_or_log() ', вероятно,' exp() 'и' log() 'внутри, является странным. – Arun