Подтвердить что ты не робот

Eclipse Indigo CDT: функция не может быть решена

Это кажется глупым, но его было 2 дня... где-то после обновления с Ubuntu 10.04 до 10.11 и от Eclipse Helios до Eclipse Indigo я столкнулся со следующей проблемой:

Описание проблемы:

Я пытаюсь использовать функцию в math.h с именем isinf(), но проблема также возникает с такими вещами, как isnan().
Программа компилируется в командной строке, используя make и fine в eclipse используя build.
Но если я открою файл программы в eclipse, он сообщит, что он не может выполнить вызов функции isinf().
Если я просто вставляю содержимое программы в новый проект и новый исходный файл, ошибка появляется немедленно.
Эта проблема не возникала в 11.04 с Eclipse Helios CDT

Вопросы:

Почему эти ошибки сообщаются только при открытии файла программы, а не при компиляции программы; почему ошибки не обнаружены, make запускается из командной строки?
Есть ли доступ к решению/обходному пути?

Информация о версии

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
Выберите Файл | Новый | Проект MakeFile с существующим кодом
Нажмите "Обзор" - перейдите в каталог (FunTest) и нажмите "ОК"
Выберите "Linux GCC" из селектора Toolchain
Нажмите "Готово"

Шаг 2. Найдите ошибку
Нажмите "Построить все" (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;

}

Makefile:

# 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 [email protected]

.cpp.o:
    $(CC) $(CPPFLAGS) $(CFLAGS) $< -o [email protected]

install:
    @echo "Build complete!"
4b9b3361

Ответ 1

У меня возникли аналогичные проблемы с сообщениями об ошибках CDT, даже если код скомпилирован в Eclipse Indigo.

Проект > Свойствa > Настройки > Двоичные парсеры > "GNU Elf Parser"

помог в моем случае. Я проверил "Elf Parser".

Ответ 2

Это похоже на проблему, с которой многие другие сталкивались с eclipse CDT. Иногда закрывать затмение и снова запускать его снова достаточно, чтобы помочь. Если это не так, взгляните на то, что у меня ниже:

Компиляция в порядке, но содержимое eclipse помогает создавать проблемы

Ответ 3

Проверьте, включают ли вы: если вы используете include<math.h>, измените его на include<cmath>. То же самое для stdio.h и stdlib.h, вы должны заменить на cstdio и cstdlib. Другим вариантом может быть изменение проекта на проект C, а не на С++.

Ответ 4

В настройках сборки отсутствует опция -lm. Project- > Properties- > Settings- > Miscleanous- > Other (linker) flags []

Ответ 5

Для меня это было решено путем добавления конкретной папки Source Location и удаления значения по умолчанию. В Luna это находится под:

Проект > Свойствa > Общие сведения о C/С++ > Пути и символы > Источник Расположение