gpt4 book ai didi

c++-cli - 当我包含编码库时出现 C++/CLI 错误 C1189

转载 作者:行者123 更新时间:2023-12-05 07:53:13 32 4
gpt4 key购买 nike

我有一个正在与 PLC 通信的应用程序.

我有一些用于通信的库,但是当我添加 marshal 时:

#include <msclr\marshal_cppstd.h>

它给我以下错误:

C1189:#error:C++ 标准库禁止宏化关键字。启用警告 C4005 以查找禁止的宏。

C4005: 'inline': 宏重定义

此 C4005 警告显示在xkeycheck.h 第 203 行包含:

#define inline EMIT WARNING C4005

我得到了更多的错误(1800+)。

那么这个错误是什么意思呢?

最佳答案

inline 是这个 #define 正在重新定义的 C++ 关键字。它警告您更改 inline 的含义非常危险。

msclr\marshal_cppstd.h 具有标记为 inline 的函数,因此这可能是第一次出现使用重新定义的内联定义的代码,它意识到它可能是不是你所期待的。

我会质疑为什么 xkeycheck.h 正在重新定义 inline —— 也许他们的库不允许内联?也许您需要在您的包含或 #undef inline 周围推送/弹出 inline 的定义?

更新:做了更多研究,我假设 xkeycheck 来自 PLC 代码。它不是。因此,xkeycheck 被设置为在发现您重新定义了任何 C++ 关键字时报告此错误。 inline 在这种情况下。正如我上面所说,marshal_cppstd.h 实际上使用了 inline,所以这是出现问题的第一个迹象,它会发出警告。所以....我的建议是搜索你所有的代码,找出你或你包含的标题在哪里#define'd inline 到其他东西。

我会将光标放在行内,然后按 F12 转到定义。

关于c++-cli - 当我包含编码库时出现 C++/CLI 错误 C1189,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32886523/

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