相关文章推荐
俊逸的萝卜  ·  Groupby,sum,reset ...·  9 月前    · 
温暖的花生  ·  【Threejs ...·  1 年前    · 

error C2872: “byte”: 不明确的符号
message : 可能是“unsigned char byte”
message : 或    “std::byte”

windows下c++编译出现错误:error C2872: ‘byte’: ambiguous symbol
原因是 c++17引入了类型 std::byte,与原来old的C++定义的unsigned char byte 重名冲突。

std::byte,std::array ,std::size

如果代码中使用了using namespace std;或者其他导致重名冲突的做法,都会出现编译错误。

解决方案1:修改代码使得符合C++17标准,去掉 using namespace std;

解决办法2:

解决byte的重名问题,不改代码:

在h文件的最顶部加上预定义宏_HAS_STD_BYTE 0  ,如下:

#ifdef _HAS_STD_BYTE
#undef _HAS_STD_BYTE
#endif
#define _HAS_STD_BYTE 0

error C2872:“XXX”:不明确的符号

C++17还引进了std::array ,std::size,也会导致同样的问题。

自己编码出现的问题,通过修改自己代码的方法来解决:
通过using声明使用std命名空间的程序

const int size = 10;
int arr[size];
此时编译程序会有如下报错

error C2872: “size”: 不明确的符号。报错的原因是在std命名空间中,还存在名为size的类型,编译器不知道使用自定义的size,还是std::size。解决的方法是改为其他不冲突的名字。

error C2872: “byte”: 不明确的符号message : 可能是“unsigned char byte”message : 或 “std::byte”windows下c++编译出现错误:error C2872: ‘byte’: ambiguous symbol原因是 c++17引入了类型 std::byte,与原来old的C++定义的unsigned char byte 重名冲突。std::byte,std::array ,std::size如果代码中使用了us...
操作系统:Ubuntu 16.04 问题描述: 在终端启动gedit命令或者vscode命令报错:gedit: symbol lookup error : /home/chujie/anaconda3/lib/libgobject-2.0.so.0: undefined symbol: g_date_copy 问题分析: 导致错误的原因应该是gedit依赖libgobject-2.0.so库,而/home/chujie/anaconda3/lib下的这个库版本不对,没有对应的 符号 。 因此解决的思路是从系统中找到正确的依赖库。 查找系统中存在的libgobject库: locate libgob
windows下c++编译出现错误: error C2872 : ‘ byte ’: ambiguous symbol 原因 c++17引入了类型 std:: byte ,如果 代码中使用了using namespace std;则会出现编译错误。 解决方案: 去掉 using namespace std;
C++ error 2872:不 明确 符号 简单地说,出现这种情况是因为程序使用的命名空间里已经有这个变量名了以下是微软给的示例代码:// C2872 .cpp // compile with: cl /EHsc C2872 .cpp namespace A { int i; } using namespace A; int i; int main() {
C++ error 2872 “clog”: 不 明确 符号 在使用VS 2019编译器运行程序时,遇到不 明确 符号 问题,通过搜索学习,得到了解决,记录一下解决问题的过程。 使用VS 2019编译器运行程序时,出现以下错误 错误(活动) E0266 "clog" 不 明确 MyPokescope 错误 C2872 “clog”: 不 明确 符号 (编译源文件 QWidgetProcess.cpp) 消息 可能是“_Dcomplex clog(_Dcomplex)” 消息 或 “std
error C2872 : “IDocument”: 不 明确 符号 1>          可能是“g:\mlevelfcst\mlevelfcst\debug\surfer.tlh(3255) : IDocument” 1>          或       “c:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atl
为了给程序添加延时System(1000),添加windows.h头文件。发生报错。” error C2872 : “ACCESS_MASK”: 不 明确 符号 “报错原因是在winnt.h中也有一个cv的命名空间,与opencv的cv::ACCESS_MASK发生冲突。故使用opencv中的延时函数 cvWaitKey(1000); #include
winnt.h里边定义了cv,它的cv空间里有一个 符号 叫ACCESS_MASK; opencv函数里边也定义了命名空间cv,它的cv空间里也有一个 符号 叫ACCESS_MASK。 解决方案:注释掉所有的using namespace cv 写C++&opencv程序时,尽量不用using namespace 命名空间,以免产生命名空间之间的冲突。...
祖上是木匠: 如果不关闭这项,直接使用plog,就会发现提示dllimport声明的win api重复定义了。 我是使用beyondcompare和别人正常编译的项目的vcxproj文件一行一行比较才发现这个点的。 开始还以为是不是因为调用到了32位的win接口,浪费了半天时间,也不知道搜索什么关键字。。。 windows驱动开发——使用sys文件 I LOVE THIS WORLD: 万恶之源360? QScrollArea类 滚动区域 程序猿的员: 服了qt了,拖出来的为啥默认 为true啊