компиляция h файла не всегда показывает ошибки - PullRequest
0 голосов
/ 20 сентября 2018

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

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

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

Вот make-файл i 'Я использую на тот случай, если в этом есть какая-то странная вещь, вызывающая задержку ... но у меня была эта проблема, просто раньше использовались необработанные команды "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 $*.cpp


all: $(TARGET)  



$(TARGET): $(OBJS)
    $(LINK) $(FLAGS) -o $(TARGET) $^ $(LFLAGS)

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

1 Ответ

0 голосов
/ 20 сентября 2018

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

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

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

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

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

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

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

...