如果第1行出现错误,并且注释掉了整个H文件,那么它并不总是..更新吗?
似乎正在编译.h文件的过去版本,但是如果我有意在main.cpp文件中输入错误,那么它将意识到h文件中存在错误。有时它确实会显示仅在h文件中的错误,但如果是经过一定时间后,则会显示idk
我只想将代码放入附加到标题的cpp文件中,但是问题是我见过的最丑陋的错误,我宁愿将其全部保留在标题中,因为它将就像15行代码一样。
这是我正在使用的makefile,以防万一其中有一些奇怪的事情导致延迟..但我以前仅使用原始的“ g ++ * .h * .cpp”命令遇到了这个问题,所以可能是不是问题。我已经为这个问题苦苦挣扎了很长时间,因为这个原因,我不得不将我最后的硬件作业都放在一个文件中
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)
答案 0 :(得分:0)
正如πάνταῥεῖ所说,直接编译头文件是不正常的。当它们包含在cpp源代码中时,它们将被合并到编译器中。
您的makefile也未与库stdc ++(libstdc ++。a)链接。我不知道在与g ++链接时这是否是一个问题,但对于我来说,与gcc总是如此。
哦,还有rm -rf
要清理!这相当激进,也许以rm -f
会更好,以防万一有人意外将/
或..
作为目标。
我认为您应该先在命令行上进行编译,然后再解决makefile中的问题。可能值得发布您的代码副本。
通常,我将使用以下代码来编译简单的代码:
gcc -g -Wall -o assignment01 assignment01.cpp -lstdc++
这将提供:一个名为“ assignment01”的exe,其中包含调试信息,所有警告以及与c ++ std库的链接。