Probleme compilen nach gcc -std=c99 -pedantic -D XOPEN SOURCE=700 -Wall -Werror -o lilo lilo.c

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Probleme compilen nach gcc -std=c99 -pedantic -D XOPEN SOURCE=700 -Wall -Werror -o lilo lilo.c
Hallo Zusammen,

Ich habe jetzt eine Version die bei mir auf dem Rechner läuft und die ich auch schon erfolgreich abgegeben submitted habe.

Ich bekomme aber diverse Fehler wenn ich den strikten compiler nutze, ich hoffe mir kann jemand weiterhelfen:

1. gcc: error: SOURCE=700: No such file or directory

2. :0:1: error: macro names must be identifiers
dieser Fehler kommt auch bei dem lilo das unter pub geteilt ist - also bei dem unveränderdeten lilo vom Lehrstuhl.

3. assignment from incompatible pointer type [-Werror]

das passiert bei mir im Code an der Stelle

tempElement = tempElement->pNext;
wobei temp element ein struct pointer ist der zu beginn der methode auf headElement zeigt, welches widerum bereits initialisiert wurde.
pNext ist der pointer zum nächsten Element.

kann mir jemand sagen wie ich die Warnings loswerde?


dir fehlen Unterstriche an gewissen Stellen.


Du hast die Unterstriche vergessen^^
Die Flags lauten Korrekt:

-std=c99 -pedantic -D_XOPEN_SOURCE=700 -Wall -Werror

vielen Dank, das behebt zwei von meinen drei Problemen

kann mir noch jemand was hierzu sagen?

3… assignment from incompatible pointer type [-Werror]

das passiert bei mir im Code an der Stelle

tempElement = tempElement->pNext;
wobei temp element ein struct pointer ist der zu beginn der methode auf headElement zeigt, welches widerum bereits initialisiert wurde.
pNext ist der pointer zum nächsten Element.

kann mir jemand sagen wie ich die Warnings loswerde?


Du hast vermutlich in deinem struct das “struct” vergessen.

struct tempElem{
struct tempElem *next; //<- this
/*fooo;*/
}; typedef struct tempElem tempElem;

Edit: du solltest das struct natürlich nicht in tempElem umbenennen, wenn deine Variable so heißt. :wink:


also daran liegts nicht:

hier nochmal CodeSchnipsel von meinem Code

struct intElement{
int intValue;
struct IntElement *pNext;
};
typedef struct intElement intElement;
//defining head element
struct intElement *headElement;
struct intElement *tempElement;


//in der insert funktion

tempElement = headElement;


tempElement = tempElement->pNext;


Abgesehen davon, dass deine Hilfspointer nicht static sind und du dir unnötigerweise Schreibarbeit auferlegt hast -

typedef struct intElement intElement;

sorgt dafür, dass du dir von da an das struct vor intElement sparen kannst - kann ich jetzt vielleicht auch in Anbetracht der Uhrzeit nichts ungewöhnliches finden.

Vielleicht wäre noch etwas mehr Compiler-Output hilfreich.

P.S.: code=c

Edit: ah dein next Pointer ist vom Typ IntElement* und nicht intElement*


oh man, das ist peinlich…

vielen Dank