gpt4 book ai didi

c++ - 将 V8 添加到我的项目后编译错误(C2143、C2059、..)

转载 作者:太空狗 更新时间:2023-10-29 21:48:58 25 4
gpt4 key购买 nike

我最近将 Google 的 V8 添加到一个也使用 Qt 的 MSVC2005 项目中,此后我一直无法编译它。定义给我带来了很多问题,例如在 V8 的 token.h 中有

#define T(name, string, precedence) name,
enum Value {
TOKEN_LIST(T, T)
NUM_TOKENS
};

行 TOKEN_LIST(T, T) 产生错误 C2143('}' 在 '{' 之前丢失),还有错误 C2059(语法错误 '{'),还有 C2334('{' 之前的标记;可见函数文本是跳过)。这会重复几次。

我搜索了 SO 和 Microsoft 的数据库并测试了各种东西,例如使用/clr,它破坏了 Qt。我还在包含“v8.h”文件之前使用了#undef,以便删除可能存在的定义。

有人可以帮忙吗?是否有修复此类错误的标准程序?谢谢。

最佳答案

您可以通过搜索 preprocessed code 之间的差异来找到冲突的宏定义。为 token.h 生成有和没有 #include <windows.h> .

例如,对于“token.h”,错误发生在 enum Value 的定义处所以你必须查看 enum 的预处理定义在这两种情况下。所以用

    #include <windows.h>
#include <token.h>

你得到:

enum Value {
...
INSTANCEOF, , NOT, BIT_NOT, (0x00010000L), TYPEOF, void, BREAK,
...
SWITCH, void, THROW,
...
FUTURE_STRICT_RESERVED_WORD, const, EXPORT,
...
};

代替:

enum Value {
...
INSTANCEOF, IN, NOT, BIT_NOT, DELETE, TYPEOF, VOID, BREAK,
...
SWITCH, THIS, THROW,
...
FUTURE_STRICT_RESERVED_WORD, CONST, EXPORT,
...
};

只有 #include <token.h> .

关于c++ - 将 V8 添加到我的项目后编译错误(C2143、C2059、..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9567868/

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