我在a.h中写了一个函数(直接把函数写在.h中,没有用cpp)然后我把这个a.h包含到stdafx.h中再在其它地方调用a.h中的函数,结果出现重定义错误。我把函数声明写在a.h,定义写在cpp文件里就没有问题了。请问为什么?
解决方案 »
- VS2005在WIN7下打开提示[Has encountered a problem and needs ]
- 一个窗口如何有多个DC
- 哪位大侠有时间帮我分析一下这个源码?
- 关于列表中绘制进度条的问题
- StretchDIBits 绘图的问题~
- 如何用双缓存实现粘贴位图后刷新全屏而不出现闪烁
- 自己编写类如何应用到控件?
- 请问怎样在ListCtrl点击每一个Item弹出不同的窗口
- BIAOMCCDdlg.obj : error LNK2001: 无法解析的外部符号 __imp__wtof
- 大恒相机的图像处理
- 2011第一次发帖--error LNK2001:_Xlen
- MFC在钩子函数中调用ShowWindow导致后面的一个消息失败
可是我在.h里定义的类为什么就没事呢?
你说:H文件在编译时会被直接插入到CPP文件中去的。
那类不是要重定义了。
#define _MYSTACK_H
或者用楼上的:#pragma once
避免二次包含。
尤其:如果你想把全局 变量放在头文件里,那就彻底错了,而且出现的问题异常诡异!
千万不要把全局非静态变量放在头文件里。不然很可能发现2个cpp文件里面修改的变量互相不可见!
当然了,常量是没问题的,因为你不改变它。最好用下面的方法:
//*.h 头文件里声明,不定义,函数也一样。只申明。
extern int a ;//*.cpp//在CPP文件里面定义,这样在链接的时候能够找到,
//而且不会发现不同CPP里面用的是不同的副本,编译速度会更快。可执行文件也应该更小。
int a = 0;
因为不想太多的文件,所以想直接写在H里