900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 关于Keil C语言变量被多次定义的问题

关于Keil C语言变量被多次定义的问题

时间:2018-08-13 02:29:40

相关推荐

关于Keil C语言变量被多次定义的问题

1. 提出问题:

假设有三个文件分别是

a.ca.hmain.c

a.h

const int a =32int b = 3

a.c

#include "a.h"void fun(){printf("%d", a); //a.c 中使用了a.h中的变量}

main.c

#include "stdio.h"#include "a.h"int main(){int c = a+b; //main.c中也调用a.h中的变量}

此时就会报错参数被多次定义的错误

2. 出错原因分析

因为 #include 关键字其实就是将 a.h 复制到main.c 和 a.c 中所以但a.h被复制了两次,且在两个.c文件使用了,此时编译器里就会存在两个一样的 变量a 从而报错,a被多次定义。

3. 解决办法

将变量定义到a.c 或者 main.c 中(我这里定义到a.c 中)

a.c

#include "a.h"const int a =32int b = 3void fun(){printf("%d", a); //a.c 中使用了a.h中的变量}

main.c

#include "stdio.h"#include "a.h"extern const int a;extern int b;int main(){int c = a+b; //main.c中也调用a.h中的变量}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。