2
我在这里看这个问题: How do I use extern to share variables between source files? 按照手册。但我仍得到链接错误...... 很想得到一些帮助,并解释为什么会发生..extern声明和头文件在C
我有2个.c文件和一个头文件:
------检查。 ħ----
#ifndef check
#define check
extern int num;
#endif
---- ---- check.c
#include "check.h"
#include <stdio.h>
int func(int x, int y)
{
int z = x+y;
return z;
}
void printnum()
{
num++;
printf("%d",num);
}
---- ---- ynnynyny.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
#include "check.h"
#include "check.c"
int num = 10;
int main()
{
printf("num before is : %d\n",num);
printnum();
printf("num now is : %d",num);
getchar();
return 0;
}
我不断收到这些错误:
1> ynnyny.c
1> check.c
1> Generating Code...
1>ynnyny.obj : error LNK2005: _func already defined in check.obj
1>ynnyny.obj : error LNK2005: _printnum already defined in check.obj
我写的东西的#ifndef,也是extern声明,那么,是什么问题呢?
谢谢!
更重要的是,从来没有'#include'任何C文件! – 2012-07-19 17:54:45
也不要命名你的文件ynnynyny.c – Shahbaz 2012-07-19 17:55:47
@KevinVermeer,我同意,特别是如果你是一个新手。在非常特殊的情况下,我实际上已经包含了.c文件(主要是如果我想在另一个修改其方法的文件中“包装”.c文件)。但是,您必须确保编译器不编译内部.c文件和外部.c文件。 – 2012-07-19 18:00:16