关于multiple defination of (多重定义 )的错误?

来源:百度知道 编辑:UC知道 时间:2024/09/28 10:30:51
1、若是在 A.h 中声明和定义一个int mm=3.

但若是在B.c 、C.c 和D.c中都包括了A.h(#include "A.h")
编译的时候不会有错可是在链接时却会出现许多multiple defination of (多重定义 )的错误!这是怎么回事呢?如何解决呢?

2、若是在 A.c 中声明和定义一个int mm=3.

但若是B.c 、C.c 和D.c中都extern int mm=3,编译的时候不会有错可是在链接时也会出现许多multiple defination of (多重定义 )的错误!这时候出现的错误和上面的错误应该是一样的吧,如何解决呢?

有可能是和我的编码规范有关吧?一个全局变量的声明 和定义如何写才好呢,以便让其他文件可以方便的使用它?
几个.c文件没有互相包含!

1.
不要在.h里面声明变量,而是在.c(.cpp)里面定义int mm=3;
然后在A.h里面用extern int mm;

2.
extern不要赋值。

ps:还没解决?
回楼上,没用的,那个能防止重复include,但是不能解决这里的问题。
头文件里面是不提倡也不应该定义一个变量的。
如果熟悉VC的win32程序,就知道那个theApp也是放在cpp文件里的,而不是头文件。

你在A.c最上面加
#ifndef H_H_H
#define H_H_H
在A.c最后加
#endif
试试

PS:回楼下
你说的很对 不过头文件历史可以声明全局变量的 不过要加extern 且好像不能赋值(刚翻过书 呵呵 我也长知识了 呵呵。。 谢谢啊~~)