首页 > 代码库 > byte重复定义问题

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;

byte重复定义问题