Eclipse C.D.T.无法识别标准功能或" NULL"

时间:2014-03-25 03:02:57

标签: c++ linux eclipse gcc null

我已经遇到这个问题好几个星期了,但是找不到解决办法。

当尝试使用Eclipse或尝试通过终端使用普通GCC或G ++进行编译时,有许多标识函数(加上“NULL”变量)无法识别,包括to_string方法。

我试图在程序中添加许多不同的标题以尝试查找正确的文件,但无济于事。我已经尝试了#including <string>, <stdio.h>, <stddef.h>, <cstdlib>,几乎任何其他标准的标题我可以在论坛帖子中找到,可能包含to_String函数。我甚至在没有“.h”扩展名的情况下使用AND尝试了所有这些#includes。不过,无论我尝试什么,都无法识别to_string和NULL(以及其他方法)。

我经历了很多论坛和许多论坛帖子并尝试了很多解决方案,包括this onethis onethis onethis onethis one,和更多。不过,我找不到任何解决方案。

我尝试卸载并重新安装Eclipse C.D.T.,Eclipse作为一个整体,GCC和G ++。我尝试在GCC命令或g ++命令中添加-std = c ++ 11和/或-std = c ++ 99标志。我尝试使用Linux GCC,Cross GCC和其他版本的GCC在Eclipse中构建。

我和J.D.T.一起运行Eclipse 3.8。和C.D.T.安装在64位Linux Mint 16 Petra上的软件包。

如果有人能帮我解决这个问题,“感恩”就不能正确表达我对你的感激之情。

编辑: 以下是gcc -v的输出:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.8.1-10ubuntu9' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu9)

以下是有错误代码的代码示例。请记住,我试图添加其他目前未显示的#includes,我有理由相信缺少#include不是问题。

#include <string>
#include <stdio.h>
#include <iostream>

using namespace std;

int Month[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

string x;

class Date_Time {
private:
    int minute, hour, day, month, year;
public:

    Date_Time(int minute, int hour, int day, int month, int year) {
        this->minute = minute;
        this->hour = hour;
        this->day = day;
        this->month = month;
        this->year = year;
    }

    string toString() {
        string min = to_string(minute);
        if (min.length() == 1)
            min = '0' + min;

        return to_string(month) + "/" + to_string(day) + "/" + to_string(year)
                + " " + to_string(hour) + ":" + min;

    }

    void addMinutes(int min) {

        minute = min + minute;
        if (minute > 59) {
            minute = minute - 60;
            hour = hour + 1;
        }
        if (hour > 24) {
            hour = hour - 24;
            day = day + 1;
        }

        if (day > Month[month])
            day = day - Month[month];
        month = month + 1;

        if (month > 12) {
            month = 1;
            year = year + 1;

        }
    }

    int getYear() {
        return year;
    }

    int getMonth() {
        return month;
    }

    int getDay() {
        return day;
    }

    int getHour() {
        return hour;
    }

    int getMinutes() {
        return minute;
    }

};

编辑:以下评论的摘要是我们确定原因是Eclipse没有识别C ++ 11标准函数和关键字。我使用他们的C / C ++插件在我的系统上安装了NetBeans,并且发生了完全相同的错误。尽管在项目配置中的多个位置添加了-std=c++11标志,但我似乎无法让NetBeans或Eclipse识别C ++ 11功能。

到目前为止,Eclipse最终可以编译而不会产生C ++ 11错误;但是,在代码窗口中,C ++ 11函数和功能仍然标记为带有红色下划线的错误,因此问题仍未完全解决。我只需要有人告诉我如何让Eclispe和/或NetBeans在其错误解析器中识别C ++ 11的功能。

再次感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

尝试使用

编译源代码
g++ -std=c++11 ...

根据to_string(),它是C ++ 2011功能。


在Eclipse Kepler中,您可以通过选择

来设置它

项目&gt;&gt;属性&gt;&gt; C / C ++ Build&gt;&gt;设置&gt;&gt;工具设置&gt;&gt; GCC C ++编译器&gt;&gt;方言

并为ISO C++11 (-std=c++0x)选择Language standard

您应该在[All configurations]选择Configuration C/C++ Build