在多个编译单元中声明变量

时间:2015-01-29 13:03:58

标签: c

大家好我有以下问题。我想将变量声明为.h文件,并将同一变量定义/初始化为.c文件。然后在我的主代码中使用预定义变量。

这是我的主要内容:

#include <stdio.h>
#include "file.h"

int main(){
   printf("%u \n\n",i);
   system("pause");
   return 0;
}

这是我的头文件:

//file.h
extern unsigned int i;

这是我的.c文件:

//file.c
unsigned int i = 10;

我希望我的主代码打印10的值,它是.c文件中定义的值。如何将.c和.h文件作为多个编译单元链接在一起?

我在Windows上使用Dev-C ++ ver 4.9.9.2。

请原谅我糟糕的英语

3 个答案:

答案 0 :(得分:1)

如果您使用的是IDE(Integrated Development Environment),那么项目中的所有文件都应自动链接在一起。

如果您使用命令行提示进行手动构建,最简单的方法是在命令行上列出所有源文件,例如

$ cc -Wall -g main.c file.c -o myprogram

上述命令(cc)编译main.cfile.c,然后将它们链接到生成的可执行文件myprogram中。

使用的标志是:

  • -Wall添加更多警告,在开发时总是很好
  • -g添加可供调试器使用的调试信息
  • -o如何命名结果输出

答案 1 :(得分:0)

编译:

gcc main.c file.c -o res

现在两个.c文件都被编译并链接在一起形成可执行文件res

并运行

./res

答案 2 :(得分:0)

要添加其他答案,如果您创建Makefile也可能会很好,您的make文件可能包含以下内容

CC      = gcc
CFLAGS  = -Wall -Wextra -Werror
LDFLAGS =
OBJ     = main.o file.o

executable: $(OBJ)
    $(CC) $(CFLAGS) $(LDFLAGS) $(OBJ) -o YourProgramName

%.o: %.c
    $(CC) -c $(CFLAGS) $<

然后,只需在控制台中输入make,即可创建可执行二进制文件YourProgramName

如果您使用的是IDE,那么它可能会打开Makefile,从而加载您的整个项目。