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中的变量}