filetaint.cpp 1>.\filetaint.cpp(272) : error C2-6ren">
gpt4 book ai didi

c++ - 如何使用 VS 2008 使 "ambiguous symbol"独一无二

转载 作者:太空宇宙 更新时间:2023-11-04 15:52:03 25 4
gpt4 key购买 nike

我在 C++ 代码中使用 #define 语句时遇到一些问题,但是我不熟悉如何在 VC++ 中处理它:

>filetaint.cpp
1>.\filetaint.cpp(272) : error C2872: 'UINT32' : ambiguous symbol
1> could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\basetsd.h(82) : unsigned int WIND::UINT32'
1> or '..\..\include\gen\types_foundation.TLH(80) : LEVEL_BASE::UINT32'
1>.\filetaint.cpp(275) : error C2872: 'UINT32' : ambiguous symbol
1> could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\basetsd.h(82) : unsigned
[...]

========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

所以问题是,编译器不知道是使用我的 Windows SDK“basetsh.h 还是 types_foundation.h 中的定义。我希望它使用后者。C++ 命名空间中是否有任何构造告诉编译器选择什么?我想避免给 SDK 或库本身打补丁。

#include "filetaint.h"
#include "dift.h"

using namespace WIND;

types_foundation.TLH 包含正确的声明。它已经在 VS 2008 中的 VC++ 路径中。我在这里有点困惑......但我想我必须找到一种方法告诉我的编译器暂时忽略 SDK ;)。

最佳答案

I want it to use the latter.

然后使用命名空间名称限定您的使用:LEVEL_BASE::UINT32

或者,从您的代码中删除 using 指令并限定您从库中使用的所有名称。在大多数情况下避免使用指令是个好主意:它们带来的麻烦远远超过它们的值(value)。

关于c++ - 如何使用 VS 2008 使 "ambiguous symbol"独一无二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6268413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com