компиляция h файла не всегда показывает ошибки

Если в строке 1 появляется ошибка, и я закомментирую весь файл H, он не всегда будет обновляться?

Кажется, что он компилирует предыдущую версию файла .h, но если я намеренно поместил ошибку в файл main.cpp, то он поймет, что в файле h есть ошибки. Кроме того, он иногда показывает ошибки, которые есть только в файле h, но idk, если это происходит по истечении определенного периода времени

Я просто попытался бы поместить свой код в файл cpp, прикрепленный к заголовку, но проблема с этим — самая уродливая ошибка, которую я когда-либо видел, и я все равно предпочел бы, чтобы все это оставалось в заголовке, поскольку 15 строк кода.

Вот make-файл, который я использую, на случай, если в этом есть какая-то странная вещь, вызывающая задержку … но у меня была эта проблема, просто раньше использовались необработанные команды «g ++ * .h * .cpp», так что это, вероятно, не проблема , Я боролся с этой проблемой в течение долгого времени и из-за этого мне пришлось поместить мое последнее задание HW в один файл.

MAINPROG=assignment01
CC=gcc
CXX=g++
CPPFLAGS=-g -std=c++11
LFLAGS=
CFLAGS=-g
TARGET=$(MAINPROG)
CPPS=$(wildcard *.cpp)
LINK=g++ $(CPPFLAGS)
OBJS=$(CPPS:%.cpp=%.o)

%.o: %.cpp
$(CXX) $(CPPFLAGS) -MMD -o $@ -c $*.cppall: $(TARGET)$(TARGET): $(OBJS)
$(LINK) $(FLAGS) -o $(TARGET) $^ $(LFLAGS)

clean:
-/bin/rm -rf *.d *.o $(TARGET)

-2

Решение

Как говорит πάντα ῥεῖ, скомпилировать заголовочные файлы напрямую не нормально. Они включаются в компиляцию, когда они включены в исходный код cpp.

Ваш make-файл также не связан с библиотекой stdc ++ (libstdc ++. A). Я не знаю, если это проблема при соединении с g ++, но это всегда для меня с gcc.

Ах, и rm -rf очистить! Это довольно агрессивно, может быть, просто rm -f было бы лучше, на случай, если кто-то случайно поставит / или же .. как цель.

Я думаю, что вы должны сначала скомпилировать в командной строке, а затем разобраться в проблемах с вашим make-файлом. Возможно, стоит опубликовать копии вашего кода.

Обычно я скомпилирую простой код с:

gcc -g -Wall -o assignment01 assignment01.cpp -lstdc++

Это дает: исполняемый файл с именем «assignment01», с отладочной информацией, всеми предупреждениями и ссылками с библиотеками c ++ std.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]