byte重复定义问题

现象:

先看下面的编译错误信息:

c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wbemcli.h(1196): error C2872: “byte”: 不明确的符号,可能是“c:\program files (x86)\microsoft sdks\windows\v7.0a\include\rpcndr.h(160) : unsigned char byte”或“w:\include\types\types.h(31) : kiwi::types::byte”

分析:

错误提示意思为程序中两处重复定义了byte类型,其中

rpcndr.h的定义为:typedef unsigned char byte;

types.h的定义为:typedef unsigned char kiwi::types::byte;

而且程序还显示导入了kiwi::types名字空间,代码如下:

using namespace kiwi::types;

解决:

先包含没有名字空间的byte定义的文件,后包含有名字空间的byte定义文件。

例如:

///先包含没有名字空间的byte定义的文件

#include <wbemcli.h>

///后包含有名字空间的byte定义文件

#include "types/types.h"

using namespace kiwi::types;

时间: 2025-01-03 02:37:42

byte重复定义问题的相关文章

VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结

Background MSDN中对于在不同的配置下Link的LIB作了说明: C Runtime Library: 开关 对应的库 版本 /MD MSVCRT.LIB 多线程DLL的Release版本 /MDd MSVCRTD.LIB 多线程DLL的Debug版本 /MT LIBCMT.LIB 多线程静态链接的Release版本 /MTd LIBCMTD.LIB 多线程静态链接的Debug版本 /clr MSVCMRT.LIB 托管代码和非托管代码混合 /clr:pure MSVCURT.LIB

winsock开发重复定义问题

参考: VS2013使用winsock.h和winsock2.h发生冲突后的终极解决方法:http://www.cnblogs.com/Shirlies/p/5137548.html WINSOCK.H WINSOCK2.H的区别及函数重复定义的解决方法:http://blog.chinaunix.net/uid-24709751-id-4150975.html windows.h和winsock2.h解决办法:http://blog.csdn.net/J_hui/article/details

重复定义问题

这里说的重复定义其实包含两个意思: 1,头文件重复包含 2,变量或函数重复定义 对问题1,比如这样: 有一个头文件 c.h . 在头文件a.h中 #include "c.h" 在头文件b.h中 #include "a.h" #include "c.h" 这样就会导致重复包含,解决办法如下: 在c.h中 #ifndef C_H #define C_H //c.h中所有内容 #endinf 这样,在第二次引用"c.h"时,由于已经

C++工程编译之“error LNK2001: 无法解析的外部符号”

今天一整天都在折腾“error LNK2001: 无法解析的外部符号”,就在头疼不已的时候,总算是找到问题原因了:各个动态链接库的编译方式必须统一才行,要不然很容易对库函数的引用产生冲突.简单来说就是,如果使用的第三方函数库编译方式采用/MD,那么主工程也应该使用/MD.我使用了libevent,而主工程默认采用/MT,所以需要忽略一大堆的函数库,我还纳闷呢,怎么会这么奇怪!!今天总算是解决了长久以来的困惑了. 下面引用一篇文章的描述:[Z]VC运行库版本不同导致链接.LIB静态库时发生重复定义

方法的使用注意事项

方法使用注意事项: 1.方法不能定义在另一个方法的里面 2.写错方法名字 3.写错了参数列表 4.方法的返回值是void,方法中可以省略return不写 5.方法的返回值类型和return后面的数据类型必须匹配 6.方法重复定义问题 7.调用方法的时候,返回值是void,,不能写在输出语句中方法的重载特性(overload) 注意事项: 1.参数列表必须不同 2.重载和参数变量名无关 3.重载和返回值类型无关 技巧:重载只看方法名和参数列表 package com.tedu.demo; /* *

C语言之头文件,static与const关键字

[前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔记之类的自己写写笔记,今天整理成博客,以便自己以后回顾. [正文] C语言头文件:将其理解为C语言模块化编程向外提供一个接口描述文件.一般包括一些供外部函数或者文件使用的变量声明,函数声明,数据类型定义以及宏定义等.举例: /*************************************

c++泛型为什么存在?

c++作为一种从c演变过来的并且采用了面向对象理念的半面向过程半面向对象的编程语言,在c的显式转换和隐式转换的基础上,也有自己的类型转化方式.在具体讨论c++的类型转换之前,首先来了解一下其中用到的重要的技术思想-泛型. 还是首先来举一个老生常谈的例子,写一个比较两个数据对象大小的函数,如果不出意外的话,可能至少有以下几个:  1 int cmp(int a,int b); 2 double cmp(double a,double b); 3 double int cmp(int a,doubl

GO中常用包笔记 bytes(四)

Package bytes 对字节数组进行操作的包.功能和strings包相似. bytes包提供的功能有: 和另一个字节数组切片的关系(逐字节比较大小,是否相等/相似,是否包含/包含次数,位置搜索,是否是前缀后缀) 2.字节数组切片和字符串的关系(字符串中是否含有字节数组所包含的rune,以及在字符串中的位置) 3.字节数组切片和rune的关系(字节数组中是否含有特定的或满足特定条件的rune,以及在字节数组中的位置) 4.字节数组切片和字节的关系(包含/位置) 5.分割分组,分组连结 6.大

java代码走查审查规范

分类 重要性 检查项 备注 命名         重要 命名规则是否与所采用的规范保持一致? 成员变量,方法参数等需要使用首字母小写,其余单词首字母大写的命名方式,禁止使用下划线(_)数字等方式命名不要出现局部变量,成员变量大写字母开头等问题   一般 是否遵循了最小长度最多信息原则? 各种命名尽可能短,表意准确,除2代替‘to’,4代替‘for’外,不建议使用数字在命名中   重要 has/can/is前缀的函数是否返回布尔型? 成员变量,方法参数,局部变量等为布尔型时,如果出现has/can