繁体   English   中英

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

[英]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.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;
}
#ifndef _NUMDEF_
#define _NUMDEF_
int num1, num2;
#else
extern int num1, num2;
#endif

同时编辑add.hsub.h如果你不妥协你的设计,虽然很多程序员可能对这种做法看不惯。 进一步为add.csub.c num1num2分配值。

这是更好地创建具有上面的代码新的头文件,它包括两个add.hsub.h

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM