我是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()」定義在哪裏? – 2010-10-14 19:06:47
可以使用'boolean'代替'BOOL',並且可能爲'TRUE'和'FALSE'定義不需要。 – Arun 2010-10-14 20:00:59
使用**全局變量**'do_exp'來控制函數'exp_or_log()'的行爲,可能是'exp()'和'log()',這很奇怪。 – Arun 2010-10-14 20:03:50