Ich habe ein kleines Programm geschrieben, das das Fast Light Toolkit verwendet und aus irgendeinem Grund wird ein Compilerfehler beim Versuch, auf die Funktionen im cmath-Header zuzugreifen, erzeugt.cmath-Funktionen erzeugen Compilerfehler
Wie Fehler: acos wurde nicht deklariert.
Dies geht für so ziemlich jede Funktion, die es versucht, in der Kopfzeile zu verwenden. Was könnte ich vermissen?
Die Header-Dateien I enthalten sind, sind
Simple_window.h
Graph.h
beide Teil des FLTK sind.
Der Code ist dies:
#include "Simple_window.h" // get access to our windows library
#include "Graph.h" // get access to graphics library facilities
int main()
{
using namespace Graph_lib; // our graphics facilities are in Graph_lib
Point tl(100,100); // to become top left corner of window
Simple_window win(tl,600,400,"Canvas"); // make a simple window
Polygon poly; // make a shape (a polygon)
poly.add(Point(300,200)); // add a point
poly.add(Point(350,100)); // add another point
poly.add(Point(400,200)); // add a third point
poly.set_color(Color::red); // adjust properties of poly
win.attach(poly); // connect poly to the window
win.wait_for_button(); // give control to display engine
}
Edit: Hier ist Beispielcode aus, wenn der Compiler-Fehler erzeugt wird. Dies ist innerhalb des cmath-Headers.
namespace std
{
// Forward declaration of a helper function. This really should be
// an `exported' forward declaration.
template<typename _Tp> _Tp __cmath_power(_Tp, unsigned int);
inline double
abs(double __x)
{ return __builtin_fabs(__x); }
inline float
abs(float __x)
{ return __builtin_fabsf(__x); }
inline long double
abs(long double __x)
{ return __builtin_fabsl(__x); }
using ::acos; //ERROR HERE
inline float
acos(float __x)
{ return __builtin_acosf(__x); }
inline long double
acos(long double __x)
{ return __builtin_acosl(__x); }
template<typename _Tp>
inline typename __enable_if<double, __is_integer<_Tp>::_M_type>::_M_type
acos(_Tp __x)
{
return __builtin_acos(__x);
}
Edit: Code :: Blocks ist Dateien als C Speichern von Dateien ....
Auf einer Seite zur Kenntnis, versuchen Sie auf dem "Warum", nicht "was" zu konzentrieren, in den Kommentaren. poly.add (Punkt (300,200)); // füge einen Punkt hinzu Wir wissen, dass es einen Punkt hinzufügt. Sagen Sie "warum" Sie diesen Punkt hinzufügen. Es ist auch keine gute Idee, die Kommentare auszurichten. –
Das war direkt aus dem Buch, das ich benutze. Es hilft mir mehr zu verstehen, was die verschiedenen Funktionen bewirken. – trikker
Welchen Compiler/Version benutzen Sie? Ist das der erste Fehler, den Sie bekommen? (Meine wilde Vermutung ist jetzt, dass der Compiler nicht korrekt installiert ist, da der Fehler in der Bibliothek liegt: findet der Compiler die Bibliothek?) –