www.mikrocontroller.net

Forum: GCC struct in Codewright


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Peter (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo

Bei uns verwenden wir CodeWright. Dieses hat eine Automatische 
Vervollständigung bei Strukturen.

Ein Beispiel:

typedef struct
{
UINT8 a;
UINT8 b;
} struct_test;

void main(void)
{
   struct_test test;

   test.

Nach eingabe des Punktes bietet er mir jetzt a oder b an.
Sollte aber beim typedef nicht struct stehten sondern:

#define struktur struct

typedef struktur
{
UINT8 a;
UINT8 b;
} struct_test;

Bietet es mir Code Write nicht mehr an. Weis jemand wo man dies bei Code 
Write einstellen kann.

Gruß Peter

Autor: Joachim Drechsel (Firma: JDCC) (scheppertreiber)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Abgesehen von der Sinnhaftigkeit so einer Sache ...

#define bearbeitet der Präprozessor. Nicht der Compiler.

Autor: Udo Schmitt (urschmitt)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Peter schrieb:
> #define struktur struct

Was soll der Scheiß?

struct ist ein reservierter Bezeichner der eine Strukturdefinition 
einleitet.

Deine Autovervollständigung hat nichts mit dem Compiler sondern nur mit 
dem Editor zu tun, und da der kein struct sieht (das wird ja erst wieder 
durch den Präprozessor ersetzt) kann der Editor die Struktur nicht mehr 
als solche erkennen und das Autovervollständigen funktioniert nicht 
mehr.

Aber nochmal, Warum benutzt du nicht den korrekten Bezeichner struct 
sondern definierst "struktur"? Wo ist der Sinn?
Das nennt sich "obfuscation".

Autor: Peter (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Sinn oder Unsinn, ich kann es hald nicht ändern.

Ich denke das es ein Problem der IDE nicht des Präprozessor oder des 
Compilers.
Ich muss nur irgendwo bei der IDE einstellen können das er nicht auf 
struct reagiert sondern auch auf ein anderse keyword.
Nur wo ist die Frage.

Autor: Peter (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
#define struktur struct

Das "struktur" war nur ein Beispielname. Ich kann leider nichts daran 
ändern das es so s...... gelöst ist.
Wollte nur wissen ob jemand weis wie man das neue Keyword einfügt.

Autor: Udo Schmitt (urschmitt)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Peter schrieb:
> Ich muss nur irgendwo bei der IDE einstellen können das er nicht auf
> struct reagiert sondern auch auf ein anderse keyword.

Du musst das einstellen können?
Warum sollte so ein Schalter existieren? Kein Mensch ausser dir (oder 
eurem "Leerer") kommt auf so eine Schnapsidee eine andere Definition für 
'struct' einzuführen.
Ich hätte als Entwickler der IDE sowas garantiert nicht vorgesehen.

Peter schrieb:
> Ich kann leider nichts daran ändern das es so s...... gelöst ist.
Warum nicht. Wer denn wenn nicht du, ist doch dein Code! Du 
programmierst doch? Oder ist alles nur geguttenbergt?

Ich liebe 'Progammierer' die meinen programmieren wäre nur 
zusammenstückeln von codefragmenten aus dem Internet. Gehörst du auch zu 
der Fraktion?

Autor: Oliver (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Das kannst du nicht einstellen. Und das ist auch gut so. Wenn ihr den 
#define-Unsinn unbedingt machen wollt, musst du halt selber die 
Struktur-Member hinschreiben.

Aber da CodeWright ein kommerzielles Produkt ist, frag halt bdeim 
Anbieter nach (wer auch immer das zur Zeit ist...)

Oliver

Autor: Udo Schmitt (urschmitt)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Erzähle uns doch mal wo der Unsinn her ist wenn du ihn nicht selbst 
verbrochen hast.

Autor: Peter (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
@udo
Schade das du geantwortet hast.
Danke für nichts....
Es gibt hald einfach Codeteile die vorgegeben sind das hat nichts mit 
guttenbergen zu tun. Ich wollte auch nicht über sinn und unsinn ....
Auch warum antworte ich überhaupt darauf ...

@oliver
danke für deine Antwort. Ist leider bei CodeWright nicht mehr so ganz 
einfach. Ich dachte ich finde eher ein paar "alte Hasen" hier.

Autor: Udo Schmitt (urschmitt)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Peter schrieb:
> Danke für nichts....
Bitte gerne geschehen. Ich habe dir erklärt warum es nicht funktioniert 
und warum das Blödinn ist. Ich war auch nicht der einzige der das für 
Blödsinn hält.
Da das für dich "nichts" ist, muss ich annehmen daß du es nicht 
verstanden hast. Oder kannst du Kritik nicht vertragen?

Peter schrieb:
> Es gibt hald einfach Codeteile die vorgegeben sind
Ich hatte schon mal gefragt: Wer gibt solchen Unsinn vor? An den richtet 
sich dann meine Kritik (und nicht nur meine).
Wenn du das auf dich beziehst kann ichs nicht ändern.

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

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Peter schrieb:

> Es gibt hald einfach Codeteile die vorgegeben sind das hat nichts mit
> guttenbergen zu tun. Ich wollte auch nicht über sinn und unsinn ....

Doch.
Genau diese Frage MUSS man sich stellen.
Denn nicht alles was möglich ist, macht auch Sinn. Und dieses macht 
ÜBERHAUPT keinen Sinn. Ganz im Gegenteil. C-Schlüsselwörter hinter einem 
#define zu verstecken, nur um eine andere Bezeichnung dafür zu haben, 
wird wohl von den meisten als gefährliche Falle angesehen. Und das 
völlig zu recht.

Ein IDE Entwickler wird nicht jeden denkbaren Unsinn unterstützen. 
Machst du (oder jemand anderer) Unsinn, musst du mit den Konsequenzen 
leben.

Autor: Peter (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Bitte löscht den Thread hab in einem anderen Forum die Antwort erhalten.

Autor: Simon K. (simon) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Peter schrieb:
> Bitte löscht den Thread hab in einem anderen Forum die Antwort erhalten.

Gelernt hast du aber dabei nichts. Schade!

Autor: Udo Schmitt (urschmitt)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Karl Heinz Buchegger schrieb:
> C-Schlüsselwörter hinter einem
> #define zu verstecken, nur um eine andere Bezeichnung dafür zu haben,
> wird wohl von den meisten als gefährliche Falle angesehen. Und das
> völlig zu recht.

Es ist wirklich schade daß Peter nicht gesagt hat von wem diese Vorgabe 
kommt, denn daß es eine Vorgabe ist habe ich zumindest so herausgelesen.

Ich kann mir eigentlich nur einen Le(e|h)rer vorstellen der sich C so 
nebenbei beigebracht hat und damit jetzt seine Schüler beglückt. 
Vieleicht will er mit der Redefinition deutsch Schlüsselwörter benutzen 
um es für die Schüler 'einfacher' zu machen.
Wenn es so ist dann kann man nur "arme Schüler" sagen.
Schönes Wochenende

Autor: Dosmo (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ihr solltet Peter nicht so aburteilen, Ihr kennt doch den Hintergrund 
gar nicht. Es gibt Firmen, die sehr seltsame Vorgaben haben, z.B. weil 
heute jemand Chefigenieur ist, der außer einem 8051 nie etwas anderes 
gesehen hat.
Ich hatte mal einen Abteilungsleiter, der kein
a = a - 1;  
sehen wollte, sondern stattdessen auf
a = a + 0xffff;  
bestand, weil das angeblich auf irgendeinem uralten µC einen 
Assemblertakt schneller wäre. Was willste da machen?

Autor: Mark Brandis (markbrandis)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Dosmo schrieb:
> Was willste da machen?

Solange der Abteilungsleiter den Code nicht sieht: Einfach so machen 
wie's richtig ist.

Oder aber, wenn der Abteilungsleiter nicht komplett borniert ist:
Ihm die Assembler-Ausgabe für die beiden C-Code Varianten zeigen, und 
sich über sein staunendes Gesicht freuen. :-)

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

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Dosmo schrieb:

> Ihr solltet Peter nicht so aburteilen, Ihr kennt doch den
> Hintergrund gar nicht.

Nein, natürlich nicht.
So wie die anderen habe ich auch herausgelesen, dass das nicht auf 
seinem Mist gewachsen ist.
Trotzdem sollte er dafür kämpfen (von mir aus auch ruhig mit Verweise 
auf hierher), dass dieser Unsinn abgestellt wird. Unsinn bleibt Unsinn.

> Ich hatte mal einen Abteilungsleiter, der kein
>
> a = a - 1;
> 
> sehen wollte, sondern stattdessen auf
>
> a = a + 0xffff;
> 
> bestand, weil das angeblich auf irgendeinem uralten µC einen
> Assemblertakt schneller wäre. Was willste da machen?

Den Algorithmus soweit pimpen, das a ein long sein muss und ihn dann 
scheinheilig fragen warum seine Lösung nicht geht, deine Lösung aber 
keinen einzigen Strich Anpassung erfodert hat.

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

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
> Ich kann mir eigentlich nur einen Le(e|h)rer vorstellen der sich
> C so nebenbei beigebracht hat und damit jetzt seine Schüler
> beglückt.
> Vieleicht will er mit der Redefinition deutsch Schlüsselwörter
> benutzen um es für die Schüler 'einfacher' zu machen.

Sowas gibts tatsächlich.
Nur übersieht besagter Lehrer dabei völlig, dass für seine Schüler 
'struktur' auch nur ein Wort ist. Genauso wie 'struct'. Es ist das 
Konzept welches dahinter steckt, dessen Verständnis wichtig ist, nicht 
wie man es nennt. Die Sache wird nicht einfacher oder schwieriger, wenn 
man eigene Ausdrücke benutzt. Egal wie gut gemeint das auch ist. Der 
einzige Effekt ist: Niemand anderer versteht einen.

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net