2011-07-15 20 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); 

这显然不能编译。

相关问题