Hallo
Ich erhalte bei folgendem Code die Warnung „assignment makes integer from pointer without a cast“
#include
…
typedef struct ddb\_baselist{
char name[64];
char type;
struct ddb\_baselist \* next;
struct ddb\_baselist \* before;
struct ddb\_object \* first\_object;
struct ddb\_complex \* first\_complex;
}ddb\_Baselist;
…
ddb\_Baselist \* ddb\_First\_List;
…
void ddb\_Start(char \* name\_of\_first\_list[]){
ddb\_First\_List=malloc(sizeof(ddb\_Baselist));
int charPosition;
while((charPositionname[charPosition]=name\_of\_first\_list[charPosition];//zu dieser Zeile kommt die Meldung
charPosition++;
}
}
Kann mir bitte jemand sagen, was das bedeutet?
MfG, Stefan
Hallo,
die Fehlermeldung heistt übersetzt etwa
zuweisung macht aus einem Pointer ein Integer ohne (expliziten) cast, also dass ein Pointer zu einer Zahl werden muss.
ddb_First_List->name[charPosition]=name_of_first_list[charPosition];//zu
ddb_First_List->name ist ein Array von char, also 8 bit integern.
ddb_First_List->name[charPosition] ist ein einzelner 8 bit wert
name_of_first_list ist ein array aus pointer to char
name_of_first_list[charPosition]; ist ein bestimmter pointer to char
ddb_First_List->name[charPosition]=name_of_first_list[charPosition]
weisst einen Pointer to char einem char-feld zu. Warnung ist m.E. plausiebel. Vermutlich wolltest Du
void ddb_Start(char * name_of_first_list){
statt
void ddb_Start(char * name_of_first_list[]){
falls dieser Funktion nur der Name des ersten Eintrags übergeben werden sollte. Deinen Code kannst Du übrigens durch strncpy ersetzen, hätte in diesem Pointer-Fehlerfall aber zu noch mehr problemen geführt.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Stefan
Ich erhalte bei folgendem Code die Warnung „assignment makes
integer from pointer without a cast“
…
Kann mir bitte jemand sagen, was das bedeutet?
Wie Achim schon sagte, Du
weist ein Element eines
„Zeigers auf Char-Zeiger“
zu auf einen skalaren Wert
(char oder int).
Ein normaler ‚String‘ ist
char dertext[]
und nicht
char \* dertext[]
Dein Quelltext muesste ungefähr so aussehen:
#include
struct ddb\_object { int a; };
struct ddb\_complex { int a,b; };
struct ddb\_baselist {
char name[64];
char type;
struct ddb\_baselist \* next;
struct ddb\_baselist \* before;
struct ddb\_object \* first\_object;
struct ddb\_complex \* first\_complex;
};
typedef struct ddb\_baselist ddb\_Baselist;
ddb\_Baselist\* ddb\_First\_List;
void ddb\_Start(char name\_of\_first\_list[])
{
int charPosition = 0;
ddb\_First\_List = malloc( sizeof(ddb\_Baselist) );
while(charPosition name[charPosition] = name\_of\_first\_list[charPosition];
charPosition++;
}
}
Grüße
CMБ