2011-07-15 52 views
0

我的源文件的開頭爲:不能使用頭文件中定義的函數

#include "foo.h" 

我能夠用我所有的全局變量,類型和結構的從我的頭文件。在我的頭文件,我開始與一對夫婦的包括:

#include<file.h> 

然後移動到全局變量:

#define GLOBAL 

然後結構:

#typedef struct boo; 

然後類型。然後我去函數聲明。即:

size_t foo(int*r, size_t nitems); 

我在做什麼錯的是我得到了鏈接錯誤>

+0

我不禁想知道#define GLOBAL的用途是什麼? –

+0

和你得到什麼錯誤? – triclosan

+0

#define全局只是一個全局varibale定義,我寫道: #define全球5 但我得到一個LNK2001 – Matt

回答

1

的問題是大概是你如何連接。

1

頭文件爲您的源代碼提供函數聲明。正如你已經發現這足以讓你的代碼編譯,但不讓它鏈接。

要獲得它的鏈接,你必須提供一個包含實際編譯函數的文件的鏈接器 - 函數聲明實際上是對編譯器的承諾,你將這樣做。

正是你如何做到這一點取決於你使用的是什麼工具,什麼形式的編譯功能是。

0

#define用於簡單的替換標識符作品酷似複製/粘貼。

後你做

#define GLOBAL 5 

下面的代碼

int GLOBAL; 
GLOBAL = 13; 
putchar(GLOBAL); 

被轉化爲

int 5; 
5 = 13; 
putchar(5); 

這顯然不能編譯。

相關問題