我在这个问题上撕扯我的头发。
我有一个以#ifndef和#define开头的.h文件,就像正常一样。当我第一次编译它时,我有一个错字,所以它意外地写成这样:#ifnef。我修复它,保存文件,重新编译,但g ++编译器仍然给我同样的问题,预处理器不知道如何阅读“#ifnef”。
error: invalid preprocessing directive #ifnef
我不明白为什么会这样。我已经更改了文件,没有错误的文件副本,周围没有任何对象文件。
我正在使用这个makefile:
# Declaration of variables
CC = g++
CC_FLAGS = -w -I.
# File names
EXEC = run
SOURCES = $(wildcard *.cpp)
OBJECTS = $(SOURCES:.cpp=.o)
# Main target
$(EXEC): $(OBJECTS)
$(CC) $(OBJECTS) -o $(EXEC)
# To obtain object files
%.o: %.cpp
$(CC) -c $(CC_FLAGS) $< -o $@
# To remove generated files
clean:
rm -f $(EXEC) $(OBJECTS)
然后,这是我的.h文件:
#include "UDP-base.h"
#include <queue>
#ifndef STREAM_MANAGER_H
#define STREAM_MANAGER_H
/*Stuff here*/
#endif // STREAM_MANAGER_H