C:“......的冲突类型”错误

时间:2015-08-07 13:48:57

标签: c

让我们假设我有2个头文件:
int num1 = 0, num2 = 0; int summation = 0; void add();

sub.h

int num1 = 0, num2 = 0; int subtraction = 0; void subtract();

.c

及其add.c个文件:

#include "add.h" void add() { summation = num1 + num2; }

sub.c

#include "sub.h" void sub() { subtraction = num1 - num2; }

.c

和主calc.c文件:

#include <stdio.h> #include "add.h" #include "sub.h" int main() { /*rest of code*/ return 0; }

calc.c

假设我需要使用.c中的2个头文件变量和函数,而不更改它们或@Shifts文件中的任何内容。

2 个答案:

答案 0 :(得分:0)

因为add.hsub.h都包含此内容:

int num1 = 0, num2 = 0;

声明相互干扰。这是全局变量为什么不好的一个很好的例子。

您的功能应该设计为采用他们需要的参数并返回结果:

int add(int num1, int num2)
{
    return num1 + num2;
}

int sub(int num1, int num2)
{
    return num1 - num2;
}

答案 1 :(得分:0)

#ifndef _NUMDEF_
#define _NUMDEF_
int num1, num2;
#else
extern int num1, num2;
#endif

如果您对自己的设计毫不妥协,请同时编辑add.hsub.h,尽管许多程序员可能不会对这种方法感到不满。进一步为num1num2中的add.csub.c分配值。

最好使用上面的代码创建新的头文件,并将其包含在add.hsub.h中。

相关问题