Forum: Compiler & IDEs struct in Codewright


von Peter (Gast)


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

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Abgesehen von der Sinnhaftigkeit so einer Sache ...

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

von Udo S. (urschmitt)


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".

von Peter (Gast)


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.

von Peter (Gast)


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.

von Udo S. (urschmitt)


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?

von Oliver (Gast)


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

von Udo S. (urschmitt)


Lesenswert?

Erzähle uns doch mal wo der Unsinn her ist wenn du ihn nicht selbst 
verbrochen hast.

von Peter (Gast)


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.

von Udo S. (urschmitt)


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.

von Karl H. (kbuchegg)


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.

von Peter (Gast)


Lesenswert?

Bitte löscht den Thread hab in einem anderen Forum die Antwort erhalten.

von Simon K. (simon) Benutzerseite


Lesenswert?

Peter schrieb:
> Bitte löscht den Thread hab in einem anderen Forum die Antwort erhalten.

Gelernt hast du aber dabei nichts. Schade!

von Udo S. (urschmitt)


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

von Dosmo (Gast)


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
1
a = a - 1;
sehen wollte, sondern stattdessen auf
1
a = a + 0xffff;
bestand, weil das angeblich auf irgendeinem uralten µC einen 
Assemblertakt schneller wäre. Was willste da machen?

von Mark B. (markbrandis)


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. :-)

von Karl H. (kbuchegg)


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
>
1
> a = a - 1;
2
>
> sehen wollte, sondern stattdessen auf
>
1
> a = a + 0xffff;
2
>
> 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.

von Karl H. (kbuchegg)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.