www.mikrocontroller.net

Forum: PC-Programmierung *Tempor abspeichern


Autor: hausmeister krause (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich hab auf mein My Programm eine Funktion erstellt

void datenspeicherntempo::init (const char * x)
{
  memset(m_arr,0,ARRSIZE * sizeof(int));
  char *tmp = char *x;

  while ( *tmp != '\0' )
  {
    setdatenspeicher(*tmp);
    tmp++;
  }
}

lässt sich aber nicht übersetzen

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
elso mit den paar infos würde ich als compiler auch nicht übersetzen.

Das sieht aber schon sehr übel aus!
> char *tmp = char *x;

char *tmp = x;

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist richtig, das lässt sich so nicht übersetzen.

Autor: hausmeister krause (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im Buch Tips und Triks ist es so drinnen

void datenspeicherntempo::init (const char * x)
{
  memset(m_arr,0,ARRSIZE * sizeof(int));
  char *tmp = (char*) x;

  while ( *tmp != '\0' )
  {
    setdatenspeicher(*tmp);
    tmp++;
  }
}


da funktionierts dann auch aber das versteh ich nicht

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das ist richtig, das lässt sich so nicht übersetzen.

Tolle Antwort, was?

Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich würde das so machen

const char *tmp = x;

Autor: zwieblum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
char *tmp = char *x;
char *tmp = (char*) x;

wer findet den unterschied ? ;-)

Autor: Loke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja was ist der Unterschied

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An den Klammern wirds kaum liegen, die sind doch meistens überflüssig, 
oder?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lukas schrieb:
> ich würde das so machen
>
> const char *tmp = x;

Dann könnte es beim Aufruf von setdatenspeicher() knirschen,
zumindest beim Kompilieren.
Nämlich dann, wenn dort kein const char* verlangt wird.
Ohne deinen Vorschlag und dem Cast (wenn er denn die Klammern
spendiert) würde es glatt kompilieren und vielleicht zur Laufzeit
schief gehen; vielleicht ist ihm das ja lieber.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mr.chip schrieb:
>> Das ist richtig, das lässt sich so nicht übersetzen.
>
> Tolle Antwort, was?

Naja geht so. Man kann es sehr wohl übersetzen; z.B. ins Englische.

Autor: Loke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich denk mal er hats deswegen so gelöst weil
sich ein const char *x
nicht in ein char *temp zuweisen lässt

Autor: Loke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> Lukas schrieb:
>> ich würde das so machen
>>
>> const char *tmp = x;
>
> Dann könnte es beim Aufruf von setdatenspeicher() knirschen,
> zumindest beim Kompilieren.

leicht möglich.

Aber dann ist die Lösung den cast einfach wegzucasten, keine wirkliche 
Lösung sondern ein Schuss ins Knie.

Ich bezweifle aber, dass es an setdatenspeicher hängen wird. So wie es 
asussieht, übernimmt die einen char per value, und dann passt das schon.
void datenspeicherntempo::init (const char * x)
{
  memset(m_arr,0,ARRSIZE * sizeof(int));

  while ( *x != '\0' )
  {
    setdatenspeicher(*x);
    x++;
  }
}

Autor: zwieblum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> An den Klammern wirds kaum liegen, die sind doch meistens überflüssig,
oder?

nö, sind sie nicht :-)

Autor: hausmeister krause (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so wie karl heinzes beschrieben hat so ist es auch
ich habs auch so gemacht aber er hat es schon richtig beantwortet

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir meinen Beitrag noch mal durchgelesen. Da ist ein Tippfehler 
drinnen, der zu einem Missverständnis führen könnte.

Es muss lauten:

Aber dann ist die Lösung den const einfach wegzucasten, keine 
wirkliche
Lösung sondern ein Schuss ins Knie.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.