Hilfe, cmath kompiliert nicht mehr...
-
Hallo, seit vor 2 stunden kompiliert mein Code plötzlich nicht mehr...
Es muss irgendwie an cmath liegen. Hatte schomal wer vor mir das Problem??
Ich nehme an folgende Fehler sind der Knackpunkt:
http://pastebin.com/3QvCGX8C
alles andere sind dann Folgefehler.
Woran könnte das liegen (gcc 4.7.2)?
Schönen Gruß
Simon
-
Es gibt diverse
using-Deklarationen im<cmath>, die die C-Funktionen imstd-Namensraum bekanntmachen:using ::sin; // Beispiel: Zeile 434Die lösen deine Fehler aus. Da sie anscheinend nicht deklariert sind, ist dein Fehler in
<math.h>- möglicherweise hast du ein Makro definiert, dass dem Include-Guard-Makro<math.h>gleicht?
-
war mein fehler, ich hatte gedankenlos eine klasse mit berechnungen math.h/math.cpp genannt (obschon in 'nem eigenen namespace) das hat die ganze verwirrung gestiftet.
-
danke für die antwort, das war ja tatsächlich genau das problem..
-
M10n schrieb:
danke für die antwort, das war ja tatsächlich genau das problem..
Dann beachte in Zukunft die Regeln für reservierte Bezeichner:
17.4.3.2.1 Global names
Certain sets of names and function signatures are always reserved to the implementation:Each name that contains a double underscore (_ _) or begins with an underscore followed by an uppercase letter (2.11) is reserved to the implementation for any use.
Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.**: Such names are also reserved in namespace ::std (17.4.3.1).
Faustregel: Unterstrich am Anfang: Böse.
Und noch zusätzlich die Regeln aus C, dass man keine Bezeichner benutzen darf, die einem Makro aus der Standardbibliothek gleichen. Und wenn du ganz, ganz sicher sein willst, dann hältst du auch noch die POSIX-Spezifikationen ein:
http://www.gnu.org/savannah-checkouts/gnu/libc/manual/html_node/Reserved-Names.html
Wobei ich da gerade selbst überrascht war:Names that end with ‘_t’ are reserved for additional type names.

Den kannte ich noch gar nicht. Nun, ungarische Notation ist ohnehin nicht mein Stil, aber trotzdem gut zu wissen.