【发布时间】:2012-02-09 01:05:25
【问题描述】:
我正在修改 C 源文件 (libape-spidermonkey.c)。我包含一个使用某些 C++ 功能(例如,class definitions、STL string vector)的 lib 头文件,因此我必须使用 g++ 而不是 gcc 来编译 libape-spidermonkey.c。
但是,由于 C++ 中的类型检查,我收到了很多错误(不是警告):
libape-spidermonkey.c: In function ‘JSBool ape_sm_raw_constructor(JSContext*, JSObject*, uintN, jsval*, jsval*)’:
libape-spidermonkey.c:2217:1: error: invalid conversion from ‘void*’ to ‘ape_sm_compiled*’
libape-spidermonkey.c: In function ‘JSBool ape_sm_sockclient_constructor(JSContext*, JSObject*, uintN,
libape-spidermonkey.c:2231:1: error: invalid conversion from ‘void*’ to ‘ape_sm_compiled*’
libape-spidermonkey.c:2244:38: error: invalid conversion from ‘void*’ to ‘_ape_sock_js_obj*’
libape-spidermonkey.c:2248:53: error: invalid conversion from ‘void*’ to ‘_ape_sock_callbacks*’
libape-spidermonkey.c:2257:36: error: invalid conversion from ‘void*’ to ‘ape_socket*’
libape-spidermonkey.c: In function ‘JSBool ape_sm_pipe_constructor(JSContext*, JSObject*, uintN, jsval*
libape-spidermonkey.c:2281:1: error: invalid conversion from ‘void*’ to ‘ape_sm_compiled*’
libape-spidermonkey.c: In function ‘JSBool ape_sm_sockserver_constructor(JSContext*, JSObject*, uintN,
libape-spidermonkey.c:2585:1: error: invalid conversion from ‘void*’ to ‘ape_sm_compiled*’
libape-spidermonkey.c: In function ‘JSBool ape_sm_xorize(JSContext*, JSObject*, uintN, jsval*, jsval*)’
libape-spidermonkey.c:2632:1: error: invalid conversion from ‘void*’ to ‘ape_sm_compiled*’
libape-spidermonkey.c:2646:31: warning: comparison between signed and unsigned integer expressions
libape-spidermonkey.c:2650:36: error: invalid conversion from ‘void*’ to ‘char*’
有什么简单的方法可以解决这个问题吗?像一些宏观魔术?
谢谢。
彼得
【问题讨论】:
-
你有什么样的 g++ 选项?您是否启用了 -Werror -Wall?如果是,则尝试为此文件禁用 -Werror。
-
头文件中有哪些 C++ 特性?贴出一些有错误的代码。
标签: c++ casting type-conversion void-pointers