VC2008 类型重定义的问题】的更多相关文章

Q: 比如"a.h"里定义了类a,类a所有函数的实现都放在"a.cpp"里.然后"b.h"和"c.h"都需要用到类a,所以都加了#include"a.h",然后main.cpp里写了#include"b.h"和#include"c.h",结果就是报错说class a重定义……那这种有两个类都要用到另一个类的情况不是必然要重定义了吗,应该怎么处理啊?谢谢! A: a.h…
windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问题,自己写的一个库里要用到ws2tcpip,这个头文件第一个包含的头文件就是winsock2.h把它放到windows前,库是能成功编译了,但当我在一个wxWidgets中调用它时,又出现那个让人厌烦的错误 ““sockaddr”: “struct”类型重定义”明显是wxWidgets先包含了win…
发现重复定义是由于从两个不同的路径包含了同一个头文件而引起的,同事也建议从另外一个路径打开工程试试, 这才慢慢发现了原因.这个原因可能有些拗口,而事实上要出现这种错误也有些"曲折", 让我从不同情况下的类型重定义来解释一下吧. 我总结的类型重定义情况有三.一.没有在文件头加#pragma once指示符.Type1.h: //#pragma onceclass Type{}; Main.cpp: #include "Type1.h"#include "Ty…
为什么要为值类型重定义相等性 原因主要有以下几点: 值类型默认无法使用 == 操作符,除非对它进行重写 再就是性能原因,因为值类型默认的相等性比较会使用装箱和反射,所以性能很差 根据业务需求,其实际相等性的意义和默认的比较结果可能会不同,但是这种情况可能不较少 所以建议是:所有供外部使用的struct都实现相等性. 实现步骤 重写object.Equals()方法 实现IEquatable<T>.Equals()接口方法 重写 == 和 != 操作符 重写object.GetHashCode(…
error C2011: “timespec”:“struct”类型重定义 C++ pthread pthread.h 中的 timespec 和time.h 中的 结构定义重复了 ,同时两个头文件中的条件编译条件不同,所以造成结构重复定义,简单快速见效的解决方法就是注释pthread.h 头文件中的struct timespce 定义 warning C4477: “printf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 1 拥有了类型“pthread_t” print 中…
今天引用外来库时出现问题,也许是版本问题. 错误如下: .....\oursun\cincludes\quickdraw.h(309): error C2011: “Picture”:“struct”类型重定义 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\comdef.h(326) : 参见“Picture”的声明 其中Picture声明如下: __if_not_exists(Picture){ struct…
使用了预编译头依然出现error LNK2005:***obj已在***obj中定义 造成该问题的可能性比较多,本人将在今后遇到时添加进来,今天先放出本人遇到的一种情况. 多重包含含有变量定义的.h文件所造成 这个现象很容易重新,首先新建一个1.h文件,然后在里面写下如下代码 #pragma once int i = 0; 然后新建一个1.cpp,里面代码如下: #include "1.h" #include "1.h" 再新建一个2.cpp,代码如下: #incl…
原帖地址:https://blog.csdn.net/clever101/article/details/100163301 windows.h和winsock2.h存在有类型重定义,往往体现在VC程序中包含winsock2.h时出现编译错误: error C2011: “sockaddr_in”:“struct”类型重定义 网友提出的解决办法是将 #include<windows.h>之前 #include <winsock2.h> 这个不是好的解决办法,因为很多程序比如MFC程…
类型定义的那个头文件只需要在功能源文件里#include 开始在主函数源文件里也#include,所以出现了重定义…
今天调用自己写的一个类,出现了class类型重定义问题,上网查了相关资料,发现是头文件重复include引起的问题. 防止头文件重复加载: 系统那些头文件,无论怎么include都没事,因为一般都用了宏定义,防止重复. 在头文件最上方写: #ifndef XXXXXXX (一个名字,尽量做到唯一) #define XXXXXXX (跟上边的名字一样) 文件最后写: #endif…