【问题标题】:inttypes.h file not found compiling Duktape with C++ Builder and Clang使用 C++ Builder 和 Clang 编译 Duktape 时找不到 inttypes.h 文件
【发布时间】:2015-10-22 14:45:33
【问题描述】:

我使用C++ Builder Seattle 创建了一个简单的 Duktape 示例,并按照Duktape 中“初始化上下文”中的代码进行操作。使用经典模式时编译良好。如果我通过取消选中 Project->Options->C++ Compiler->Use 'classic' Borland compiler 切换到 clang,我会收到以下错误。

inttypes.h file not found on line 780 of duktape.h

如果我注释掉包含我会得到以下错误:

Unresolved external _va_copy
Unresolved external _fmin
Unresolved external _fmax

【问题讨论】:

  • <inttypes.h> 标头和va_copy() 是C99 功能(我认为fminfmax 也是如此)。也许您需要使用clang 在 C99 或 C11 模式下编译才能激活它们。请注意,fminfmax 来自 <math.h>va_copy() 来自 <stdarg.h>。或者,您可能需要在切换编译器时重新配置 Duktape;它被设置为可以在一个编译器上正常工作,但不能在另一个编译器上正常工作。
  • 我需要弄清楚如何重新配置​​ Duktape。它有各种神奇的自动检测#ifdefs

标签: c++ c++builder c++builder-10-seattle duktape


【解决方案1】:

确保 clang 具有 -std=c99 的常规方法是不需要进行遗留类型检测。遗留类型检测并不总是可靠的。

但是,如果由于某种原因不能使用 C99/C++11,您始终可以直接编辑 duk_config.h 标头(duk_config.h 从 Duktape 1.3.0 开始存在),其中包含所有检测逻辑.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2012-11-04
    • 2014-04-03
    • 2021-12-03
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    相关资源
    最近更新 更多