让我们假设我有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
文件中的任何内容。
答案 0 :(得分:0)
因为add.h
和sub.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.h
和sub.h
,尽管许多程序员可能不会对这种方法感到不满。进一步为num1
和num2
中的add.c
和sub.c
分配值。
最好使用上面的代码创建新的头文件,并将其包含在add.h
和sub.h
中。