Hallo zusammen,
ich habe von einem Mathematiker ein Programm erhalten, dessen Struktur ich erstmal nicht ändern kann und welches zusammengefasst folgenden Aufbau besitzt:
Eine prog.cpp, welche #include a.h und #include b.h beinhaltet.
Es existieren keine a.cpp oder b.cpp, die Implementierungen sind in den headerdateien.
In a.h wird zusaetzlich mit inlinening gearbeitet. Was fuer folgen hat das auf mein makefile?
Das makefile soll bei der Aenderung von einer der drei Dateien alle drei neubauen (performance ist kein Kriterium). So sieht mein aktuelles Makefile aus:
CXX:=icpc
LDFLAGS=-g -mfpmath=387 -finline-functions
LDLIBS=-lgmp
prog: prog.o
$(CXX) $(LDFLAGS) -o prog $(LDLIBS)
prog.o: prog.cpp b.h a.o
$(CXX) $(LDFLAGS) -c prog.cpp a.o $(LDLIBS)
a.o: a.h
$(CXX) $(LDFLAGS) -c a.h
Normalerweise wäre der letzte Teil bei einem header wohl nicht notwendig, da mittels finline aber bereits die Implementierungen untergebracht ist hier jedoch schon? Zurzeit bekomme ich durch die a.h dutzende Fehler in dieser Richtung:
solvemodz.h(34): error: identifier "exit" is undefined
exit(1);
^
solvemodz.h(48): error: identifier "NULL" is undefined
return NULL;
^
Woran koennte das liegen?
Das es vom Ansatz her schöner geht ist mir klar, aber das kann ich mir nachher selbst beibringen.
ich habe von einem Mathematiker ein Programm erhalten, dessen Struktur ich erstmal nicht ändern kann und welches zusammengefasst folgenden Aufbau besitzt:
Eine prog.cpp, welche #include a.h und #include b.h beinhaltet.
Es existieren keine a.cpp oder b.cpp, die Implementierungen sind in den headerdateien.
In a.h wird zusaetzlich mit inlinening gearbeitet. Was fuer folgen hat das auf mein makefile?
Das makefile soll bei der Aenderung von einer der drei Dateien alle drei neubauen (performance ist kein Kriterium). So sieht mein aktuelles Makefile aus:
CXX:=icpc
LDFLAGS=-g -mfpmath=387 -finline-functions
LDLIBS=-lgmp
prog: prog.o
$(CXX) $(LDFLAGS) -o prog $(LDLIBS)
prog.o: prog.cpp b.h a.o
$(CXX) $(LDFLAGS) -c prog.cpp a.o $(LDLIBS)
a.o: a.h
$(CXX) $(LDFLAGS) -c a.h
Normalerweise wäre der letzte Teil bei einem header wohl nicht notwendig, da mittels finline aber bereits die Implementierungen untergebracht ist hier jedoch schon? Zurzeit bekomme ich durch die a.h dutzende Fehler in dieser Richtung:
solvemodz.h(34): error: identifier "exit" is undefined
exit(1);
^
solvemodz.h(48): error: identifier "NULL" is undefined
return NULL;
^
Woran koennte das liegen?
Das es vom Ansatz her schöner geht ist mir klar, aber das kann ich mir nachher selbst beibringen.
Zuletzt bearbeitet: