【发布时间】:2014-09-14 21:41:21
【问题描述】:
我有一个在 Linux 上启动的 C/C++ 项目,现在我想将它移植到 MacOS。我面临的问题如下:
我的源代码链接到 C 库(@987654321@ 的 abc 工具)并使用该库中的头文件。在 Linux 上编译时一切顺利,但在 MacOS 上编译时往往会出现问题。我得到的错误如下:
abc/src/misc/vec/vecPtr.h:895:33: error: too many arguments to function call, expected 0, have 2
这主要是由于两个系统上处理函数指针的方式。正如我从在线搜索中了解到的那样,在 C 中,带有空括号 () 的函数指针被认为具有可变数量的参数,而在 C++ 中并非如此。似乎 Linux 上的 g++ 能够正确编译此类代码,而在 MacOS 上却失败了。
任何人都可以就这个问题提供一些见解吗?
谢谢
【问题讨论】:
-
似乎您正在尝试编译旨在使用 C++ 编译器编译为 C 的代码。在相关头文件中的内容周围使用
extern "C" { ... }可能会起作用 - 或者使用 gcc 而不是 g++。 -
你用的是什么编译器?你是如何调用它的?
-
我正在使用带有隐式规则的 makefile。我尝试将 CXX 设置为 g++,将 CC 设置为 gcc,但没有成功。我也尝试将它们保留为默认系统值,但这也没有用。