不能用C库(功能)

时间:2012-11-08 17:00:39

标签: c++ eclipse qt

以下是我的环境:

  • 适用于C / C ++开发人员的Eclipse IDE(Juno)
  • Qt 4.8.3
  • Qt Eclipse Integration 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

非常感谢!

3 个答案:

答案 0 :(得分:2)

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

#include <cstdlib>

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

using namespace std;

(即使我不推荐)或

using std::exit    using std::atoi;

或使用完全限定名称:

std::exit(-1);

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

答案 1 :(得分:1)

我有一个类似的案例,我可以通过将#include <cstdlib>移动到标题包列表的顶部来解决。这意味着其他一个头文件依赖于cstdlib中的某些内容。这不是一个好的做法,但它们是所有系统头文件并试图纠正它们会使代码在类似的开发系统之间的可移植性降低。

答案 2 :(得分:0)

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