Hallo,
ich habe gerade begonnen, von einem Basic Dialekt auf C (Arduino)
umzusteigen, strauchle aber massiv an den Grundlagen. Ja, ich werde mich
einarbeiten, wollte aber eine kleine Funktion jetzt schon einbauen.
Leider scheitere ich kläglich an der fundamentalen Übergabe; und zwar
sieht das so aus
Es wird definiert
1
const char* ssid = "MeinNetz"
und soll in diese Funktion übergeben werden
1
static void sendStrXY( char *string, int X, int Y)
Wie muss ich den text aus ssid richtig übergeben bzw. formatieren, damit
er akzeptiert wird?
Danke vorab!
Jochen schrieb:> const char*
Mach mal zwischen char und * ein Blank!
Du hast irgendwo noch einen Funktionsprototyp, den musst du auch auf
"const char *" anpassen
@Mark: ja geht
@Der Andere: was bitte ist ein Funktionsprototyp ....
Problem ist wohl die Definition als Konstante. Habe damit einen
Workaround, frage mich aber was die ein oder andere Deklaration für
Vor/Nachteile hat (natürlich nicht gleichzeitig)??
Jochen schrieb:> char* ssid = "MyNetz2";
Das deklariert einen Zeiger auf nicht-konstante Daten, aber "..." ist
trotzdem konstant. (Dies wird nur für Kompatibilität mit altem C-Code
erlaubt.)
Einen nicht-konstanten String erhält man mit:
Peter II schrieb:> sendStrXY( ssid , 1, 42 );Jochen schrieb:> Na, das wäre zu einfach:invalid conversion from 'const char*' to 'char*'> [-fpermissive]> das ist die Fehlermeldung (streng nach try-and-error war das mein erster> Versuch)
Dann mach halt nen char* draus:
sendStrXY( (char *)ssid , 1, 42 );
Gruß Pit
Pit schrieb:> Dann mach halt nen char* draus:> sendStrXY( (char *)ssid , 1, 42 );
Es besteht keine Notwendigkeit für einen Cast, wenn man die Daten so
deklariert, dass sie zu der verarbeitenden Funktion passen.
Peter II schrieb:> Andreas S. schrieb:>> ... und dann meldet der Compiler: "ssid ist losing const qualifier".>> dann muss halt noch die Funktion angepasst werden.> static void sendStrXY( const char *string, int X, int Y)>> wobei das doch gar kein c mehr ist oder?
Doch das ist immer noch C und wenn die Funktion den string nicht
verändert (was zumindest der Name nahe legt), dann ist es genau das was
du machen solltest.
MaWin schrieb:> Der Andere schrieb:>> Mach mal zwischen char und * ein Blank!>> Wozu ?
Es gibt durchaus "common sense" auch bei Schreibweisen in C
Das natürlich ein MaWin wieder schlauer ist als der Rest der Welt ist
aber klar.
Mein Tipp an dich MaWin, spare die auch die Zeilenumbrüche, du bist ja
eh der Verfechter von "Geiz ist Geil"
:-)
Jochen schrieb:> @Der Andere: was bitte ist ein Funktionsprototyp ....
Genau jetzt IST der Hinweis fällig: bevor du alle anderen mit Code
Kopierereien die dann nicht funktionieren nervst:
Programmieren heisst nicht Code aus dem Internet zusammenzustückeln,
sondern vorher zu LERNEN wie die Sprache funktioniert.
eine constante, die nicht änderbar ist
>> und soll in diese Funktion übergeben werden>
1
> static void sendStrXY( char *string, int X, int Y)
2
>
die keine constante erwartet, sondern ein char *string
noch dazu zwei integer werte für x und y
wohl eine funktion, die ein lcd oder display oder anderes
show medium ansteuert, die übergebenen zeichen zu platzieren.
>> Wie muss ich den text aus ssid richtig übergeben bzw. formatieren, damit> er akzeptiert wird?
die const ändern zu einer einfachen
oder die einfache in der funktion zu einer const
wobei du x und y noch beachten solltest..
Observer schrieb:> Das wird jetzt aber unfreundlich hier!>> Jochen schrieb:>> Ja, ich werde mich>> einarbeiten, wollte aber eine kleine Funktion jetzt schon einbauen.
Und warum hilfst du dann nicht?
Alle Hinweise wurden gegeben, aber es macht keinen Sinn wenn er
keinerlei Grundlagen versteht.
Du kannst auch einem Chinesen hier lange auf Deutsch erklären welchen
Weg er nehmen muss, er wird dich nicht verstehen wenn er kein Deutsch
kann.
Naja, man muss nicht überall seinen Senf dazugeben... Belassen wir es
dabei, dass er immerhin willens ist was zu lernen - auch wenn
copy'n'paste nicht der beste Weg ist.
Ich beklage hier nur den deutlich ruppigen Ton - Netiquette und so...
duck und weg........