[英]C: “Conflicting types for …” error
假设我有2个头文件:
add.h
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
使用2个头文件变量和函数,而无需更改它们或它们的.c
文件中的任何内容。
因为无论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;
}
#ifndef _NUMDEF_
#define _NUMDEF_
int num1, num2;
#else
extern int num1, num2;
#endif
同时编辑add.h
和sub.h
如果你不妥协你的设计,虽然很多程序员可能对这种做法看不惯。 进一步为add.c
和sub.c
num1
和num2
分配值。
这是更好地创建具有上面的代码新的头文件,它包括两个add.h
和sub.h
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.