invalid conversion from ‘void*’ to ‘double*’
-
noob_lolo schrieb:
änder doch mal deine datei endung in *.c
ingobulla schrieb:
[b]cluster.c[/b]:209: error: invalid conversion from ‘void*’ to ‘double*’
Er ruft anscheinend bewusst einen C++ Compiler auf.
-
ups
-
Auch ein C Compiler ärgert sich hier!
double* rank = (double*)malloc(n*sizeof(double));
-
Martin Richter schrieb:
Auch ein C Compiler ärgert sich hier!
double* rank = (double*)malloc(n*sizeof(double));
Nein, ein C Compiler wird das implizite Casten von void* in einen anderen Zeigertyp definitiv erlauben. Dein Code ist C++ Code, und dort sollte man statt malloc sowieso lieber new benutzen.
-
Martin Richter schrieb:
Auch ein C Compiler ärgert sich hier!
double* rank = (double*)malloc(n*sizeof(double));
Das sollte er eigentlich nicht. Welcher Compiler und was sagt er genau?
-
In folgendem Quelltext sind ja die gleichen Passagen:
http://www.ezcodesample.com/urysohn/urysohn.txtDer gcc und der digital mars schlucken das.
Der Open Watcom ist nicht ganz glücklich, aber vielleicht hab ich da die Compilerschalter nicht richtig gesetzt.Ob man die .cpp Endung mit den Headernausführen soll
MfG f.-th.
-
Der Code ist definitiv kein C++, sondern C99.
-
Das meint der gcc dazu:
>gcc -pedantic -Os -o urysohn urysohn.c -std=c99 urysohn.c:129: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'UrysohnIdentification' urysohn.c: In function 'main': urysohn.c:290: error: expected expression before 'double' urysohn.c:312: warning: implicit declaration of function 'UrysohnIdentification' urysohn.c:344: error: expected expression before 'double' >Exit code: 1
Der Digital Mars sieht in Zeile 129 keinen Fehler, bei den anderen beiden ist er der gleichen Meinung wie der gcc.
Wusste gar nicht, das der Digital schon C99 implementiert hat - aber es sieht so aus als ob die einige Header da schon umgesetzt haben
MfG f.-th.
-
Die Fehler in den Zeilen 290 und 344 rühren von function-style casts, die C nicht kennt. Mach die Klammern um double, nicht um den zu castenden Ausdruck.
Der Fehler in Zeile 312 hängt direkt vom ersten Fehler ab.
Ich denke, der erste Fehler kommt, weil dem Compiler der Typ bool unbekannt ist (ist das in C99 immer noch so?). Versuch mal
#define bool int #define true 1 #define false 0
[Edit]Mach besser ein
#include <stdbool.h>
Da sind die entsprechenden Makros definiert.
-
C99 kennt
bool
Die Umsetzung bei den verschiedenen Compilern variiert leicht.
Manchmal muss stdbool.h nicht extra eingebunden werden, mal schon und
bei einem Compiler fand ich gar das es vom cstdbool abgeleitet wurde.
Ein anderer Compiler unterscheidet ob man mit C99 programmiert oder nicht, mit unterschiedlicher Realisierung.MfG f.-th.