Это кажется глупым, но его было 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!"