gpt4 book ai didi

c++ - 如何避免与 VSConstants.S_OK 字段命名冲突?

转载 作者:行者123 更新时间:2023-11-28 02:55:31 27 4
gpt4 key购买 nike

场景如下:

我有 WSCF Blue 生成的 C# Web 服务客户端,我必须从 C 调用它。我使用 C++ CLI“桥”来完成它。在 C# web 服务客户端我有

namespace MyCompany.Product.ExternalPlan.Client
{
public enum TMsgStatus
{
S_OK,
//...
E_ERROR,
}

这很好。

C++ CLI 项目做了类似的事情(这不在任何命名空间中!!):

try 
{
EPClient::Client^ client = gcnew EPClient::Client();
m_ResponseHeader = client->CreateExternalProject(n_Project->Id, m_ProjectData, m_NameValuePairs, // in
m_PlanAndWorksExternal, ConvertNativeToManaged(n_UserName), // in
m_ProjectRet, m_PlanAndWorksRet); // out
}
catch (Exception ^ e)
{
// ...
return -1;
}

if (m_ResponseHeader->Status == MyCompany::Product::ExternalPlan::Client::TMsgStatus::S_OK)
{
ConvertManagedToNative(n_ProjectRet, m_ProjectRet);
}

现在,如果我将上面 if 语句中的 S_OK 更改为 E_ERROR,就可以了。我读到在 C++ 中枚举是全局的,所以我认为这就是它与这个 VS 东西混合的原因。我对 C++ 编程几乎一无所知。 C++ 代码是从 C 调用的,我有类似的没有命名空间的示例。我认为这根本不重要,因为我指的是带有完整命名空间的 S_OK。

谢谢和最好的问候! -马蒂

最佳答案

我认为这更多是 #define 的问题,而不是命名空间的问题。在使用它的代码之前尝试 #undef S_OK

关于c++ - 如何避免与 VSConstants.S_OK 字段命名冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22092535/

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