1

以下是我的环境:

  • 面向 C/C++ 开发人员的 Eclipse IDE(Juno)
  • Qt 4.8.3
  • Qt Eclipse 集成 v1.6.1
  • mingw(20120426)

当我创建一个 Qt 控制台项目时,我就是不能使用 C 库函数,例如exit(int)atoi(string).

错误信息是这样的Function 'exit' could not be resolved

我已经包含stdlib.h,但仍然无法工作。

不知道跟指数有没有关系。


20121109更新

谢谢你给我帮助!

atoi只是一个例子!

虽然我用c++编写程序,但有时我想使用C库,所以我将它标记为c++。

以下是我包括的

  • C:/MinGW/include
  • C:/MinGW/lib/gcc/mingw32/4.6.2/include
  • C:/MinGW/lib/gcc/mingw32/4.6.2/include/c++
  • C:/MinGW/lib/gcc/mingw32/4.6.2/include/c++/backward
  • C:/MinGW/lib/gcc/mingw32/4.6.2/include/c++/mingw32
  • C:/MinGW/lib/gcc/mingw32/4.6.2/include-fixed

其他的是 Qt 库。

以下是main.

#include <QtCore>
#include <QCoreApplication>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
    std::exit(0);
    QCoreApplication a(argc, argv);
    return a.exec();
}

我尝试这种方式,但仍然收到错误消息Function 'exit' could not be resolved

非常感谢!

4

3 回答 3

2

首先,使用 C++ 标头样式。对于 stdlib.h :

#include <cstdlib>

然后,我猜你没有带来命名空间信息。要么写:

using namespace std;

(即使我不推荐它)或

using std::exit    using std::atoi;

或使用完全限定名称:

std::exit(-1);

最后,为什么你需要像 atoi 这样的功能?

于 2012-11-08T17:07:37.443 回答
1

我有一个类似的情况,我可以通过移动#include <cstdlib>到标题包含列表的顶部来解决。这意味着其他头文件之一依赖于cstdlib. 这不是很好的做法,但它们都是系统头文件,尝试更正它们会使代码在类似开发系统之间的可移植性降低。

于 2014-11-12T17:03:03.427 回答
0

我使用 Eclipse C++ 开普勒。这就是我所做的,它对我有用:右键单击编辑器屏幕>运行方式>本地 C/C++ 应用程序。

于 2014-03-06T09:11:12.650 回答