myk*_*myk 22 eclipse eclipse-cdt
这感觉很傻,但是从Ubuntu 10.04升级到10.11并从Eclipse Helios升级到Eclipse Indigo之后的某个时间......我遇到了以下问题:
我正在尝试在math.h中使用一个名为isinf()的函数,但问题也出现在像isnan()这样的问题上.
该程序使用make在eclipse中使用make和fine进行编译.
但是如果我在eclipse中打开程序文件,它会报告它无法解析isinf()函数调用.
如果我只是将程序内容插入到新项目和新源文件中,则会立即显示错误.
使用Eclipse Helios CDT在11.04下没有发生此问题
为什么这些错误仅在程序文件打开时报告,而在编译程序时不报告; 为什么未检测到的错误是从命令行运行的?
有解决方案/解决方法吗?
Linux Ubuntu 10.11 64位
Eclipse CDT Indigo,Service Release 1,构建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'Enter./TestOut
程序响应"不是无限的"
步骤1.在Eclipse中创建项目
打开Eclipse
选择File | New | MakeFile Project with Existing Code
单击Browse - 导航到目录(FunTest)并单击ok
从Toolchain选择器中选择'Linux GCC'
单击Finish
步骤2.找到错误
单击Build All(Ctrl-B) - 项目构建没有错误
在项目资源管理器中打开项目以在目录中显示文件
双击文件"Test.cpp"
注意行旁边的错误图标测试无穷大
注意2错误消息:
Semantic error: Function _isinff could not be resolved
Semantic error: Function _isinfl could not be resolved
Run Code Online (Sandbox Code Playgroud)
TEST.CPP:
include <math.h>
int main(int argc, char **argv)
{
int TestNum = 10;
if (isinf(TestNum) == 0)
printf("Not infinite\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
生成文件:
# 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!"
Run Code Online (Sandbox Code Playgroud)
小智 7
即使代码在Eclipse Indigo中编译得很好,我也遇到过类似的CDT报告错误问题.
项目>属性>设置>二进制解析器>"GNU Elf Parser"
帮助我的情况.我检查了"精灵解析器".