编译h文件并不总是显示错误

时间:2018-09-19 23:55:54

标签: c++ hfile

如果第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)

1 个答案:

答案 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库的链接。