Eclipse Indigo CDT:功能无法解决

时间:2011-11-01 13:14:11

标签: eclipse eclipse-cdt

这感觉很傻,但是从Ubuntu 10.04升级到10.11并从Eclipse Helios升级到Eclipse Indigo之后的某个地方......我遇到了以下问题:

问题描述:

我正在尝试在math.h中使用一个名为isinf()的函数,但问题也出现在像isnan()这样的事情上。
该程序在命令行中使用make和fine在eclipse中编译得很好使用build。
但是如果我在eclipse中打开程序文件,它会报告它无法解析isinf()函数调用。
如果我只是将程序内容插入到一个新项目和新的源文件中,错误立即出现。
在Eclipse Helios CDT 11.04下没有出现此问题

问题:

为什么这些错误仅在程序文件打开时报告,而在编译程序时不报告;为什么没有检测到的错误是从命令行运行的?是否有可用的解决方案/解决方法?

版本信息

Linux Ubuntu 10.11 64位
Eclipse CDT Indigo,Service Release 1,Build id:20110916-0149
(也使用Eclipse EE Indigo - 如果这有所不同)
GNU Make 3.81
gcc 4.6.1-9Ubuntu3

要复制:

请在下面找到您需要复制的两个文件:

步骤0。验证Eclipse外的一切都很好 复制附加的源文件并生成文件
创建目录,例如Mkdir FunTest
将源文件保存为“Test.cpp”,将makefile保存为“makefile”
打开命令提示符并导航到目录,例如FunTest
输入'make'
输入./TestOut
程序响应“不是无限”

第1步。在Eclipse中创建项目
打开Eclipse
选择File | New | MakeFile Project with Existing Code
单击“浏览” - 导航到目录(FunTest),然后单击“确定” 从工具链选择器中选择“Linux GCC” 单击完成

第2步。查找错误
单击Build All(Ctrl-B) - 项目构建没有错误
在项目资源管理器中打开项目,以在目录
中显示该文件 双击文件“Test.cpp”
请注意无限的线路测试旁边的错误图标
请注意2条错误消息:

Semantic error: Function _isinff could not be resolved 
Semantic error: Function _isinfl could not be resolved

Test.cpp的:

include <math.h>

int main(int argc, char **argv)
{

int TestNum = 10;

if (isinf(TestNum) == 0)
    printf("Not infinite\n");


return 0;

}

生成文件:

# Specify the compiler
CC = g++

# Specify the compiler flags
CFLAGS += -c

# Specify the files making up the application
SOURCES = Test.cpp
OBJECTS = $(SOURCES:.cpp=.o)
EXECUTABLE = TestOut

all: $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) $(LDLIBS) -o $@

.cpp.o:
    $(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@

install:
    @echo "Build complete!"

5 个答案:

答案 0 :(得分:7)

即使代码在Eclipse Indigo中编译得很好,我也遇到过类似的CDT报告错误问题。

  

项目&gt;属性&gt;设置&gt;二元解析器&gt; “GNU Elf Parser”

在我的案例中有所帮助。我检查了“精灵解析器”。

答案 1 :(得分:4)

这看起来像许多其他人之前使用eclipse CDT的问题。有时关闭日食然后重新启动它就足以帮助了。如果不是这样,请看看下面的内容:

Compilation ok, but eclipse content assist having problems

答案 2 :(得分:3)

检查您的内容:如果您使用的是include<math.h>,请将其更改为include<cmath>。同样适用于stdio.hstdlib.h,您应该由cstdiocstdlib替换。另一个选择可能是将项目更改为C项目而不是C ++。

答案 3 :(得分:0)

您的构建首选项中缺少-lm选项。 项目 - &gt;属性 - &gt;设置 - &gt; Miscleanous-&gt;其他(链接器)标志[]

答案 4 :(得分:0)

对我来说,它是通过添加特定的“源位置”文件夹并删除默认值来解决的。在Luna,它位于:

  

项目&gt;属性&gt; C / C ++一般&gt;路径和符号&gt;资源   位置