Dreh gleich durch, Zeiger auf Chararray gebaut aus Int und Char zur Übergabe an Funktion
-
Moin,
ich habe lange nicht mit C programmiert und sitze nun an einem vielleicht kleinen Problem fest, das mich nervt.Die Umgebung ist LabWindow CVI (ANSI C mit erweiterten Bibliotheken)
So ist es.
/***************************************************************************/
Headerfileint openSkriptFile(int mainPanelHandle, int stepSetupPanel);
int writeSkriptFile(int mainPanelHandle, int stepSetupPanel);
int writeSkriptNOTFREE(int mainPanelHandle,int stepSetupPanel, char puf);
/**************************************************************************//***************************************************************************/
C Fileint writeSkriptNOTFREE(mainPanelHandle, stepSetupPanel, puf)
{
if( (skriptNOTFREE=fopen("skriptNOTFREE.gho","a")) == NULL)
{
printf("Kann SKRIPTNOTFREE.GHO nicht oeffnen\n");
return 1;
}fputs(puf, skriptNOTFREE);
return EXIT_SUCCESS;
}
/***************************************************************************/und die aufrufende Funktion
/***************************************************************************/...
static char stepKreuz='#'; //führendes Kreuz
static char stepperON [4] =" ON"; //Schalter an
static char stepperOFF [5] =" OFF"; //Schalter aus
static char delayGleich [3] = "D="; //Verzögerung
static char paramGleich [2] = "P"; //Parameter
static char speedGleich [3] = "V="; //Geschwindigkeit
static char posGleich [3] = "W="; //Position
static char accGleich [3] = "A="; //Beschleunigungstatic char ret [10];
static char csRet = 0x0D;
...
unsigned short int getAxisNo(mainPanelHandle, stepSetupPanel)
{
unsigned short int usiNummer = 0;
char axisNo [10] = "";GetCtrlVal (stepSetupPanel, STEP_PANEL_STEP_NO, &usiNummer); //Wert aus Maske
sprintf(axisNo,"%c%i%s%c%c",stepKreuz,usiNummer, stepperON, stepKreuz, csRet);
writeSkriptNOTFREE(mainPanelHandle, stepSetupPanel, axisNo);
SetCtrlVal(stepSetupPanel, STEP_PANEL_STEP_TBCOMMANDS);
return usiNummer;
}
/***************************************************************************/Als Fehler kommt nur
55, 1 Conflicting argument declarations for function 'writeSkriptNOTFREE'.
Egal was ich probiere, Arrays kopieren in der Zielfunktion, den Chararray static machen, anders übergeben, vielleicht bin ich zu blöd oder einfach zu viel Java
Hat jemand ne Idee, wie ich das mache ?
-
Erstens: sfds
Zweitens: Bei der Funktionsdefinition solltest du auch die Parametertypen angeben.
-
Das hab ich doch,
die Definition steht in der Headerfile.Wenn ich in die C-File wieder die Datentypen einsetze, ist das ne erneute Deklaration der Funktion und es gibt den nächsten Fehler.
Oder wie meinst du das ?
michael
-
Die Deklaration (Prototyp) steht im Header, die Definition im .C File* - und letztere benötigt auch die Parametertypen (genau das sagt auch deine Fehlermeldung aus: Die Definition passt nicht zur vorigen Deklaration).
* schau dir mal an, was der Unterschied dazwischen ist.
-
ich steh aufm Schlauch,
kannst du mir nicht einfach sagen, was ich ändern muss ?
Ich hab hier 3 Bücher und Googles über C, Pointer und Chararrays, aber es will nicht, wie es soll.
Ich brauch was, was ich nach vollziehen kann.
Danke
-
Als erstes solltest du lernen, mitzudenken (und auch zu lesen, was andere* schreiben).
Und zweitens:
C File:int writeSkriptNOTFREE(/*->*/int/*<-*/ mainPanelHandle,int stepSetupPanel, char *puf) { //rest wie gehabt }
*inklusive deinem Compiler
-
das war das was ich gemacht hab, nachdem du es das erste Mal geschrieben hattest. Jetzt geht es.
Erstaunlicherweise funktioniert es mit den anderen Schreib- und Lesefunktionen, die ebenfalls im Header stehen, ohne die Typangabe.
Aber ich danke dir und gelobe Besserung.
Manchmal sieht man aber den Wald vor lauter Bäumen nicht.michael