Gast
#5572814
Ich weiß es jetzt echt nicht mehr... :(
|
Anzeige
|
Kann man in C mit 'with' auf eine struct zugreifen?
Gast
#5572814
Ich weiß es jetzt echt nicht mehr... :( nein
Gast
#5572830
Gibt es sowas wie with in C ? Nein, "with" ist kein reserviertes Schlüsselwort in C, und es gibt auch kein Äquivalent dafür. Da eine Struktur Elemente der unterschiedlichsten Typen enthalten kann, zur Laufzeit aber der Typ einer Variablen nicht bestimmt werden kann, könnte ein entsprechendes Konstrukt auch nicht sinnvoll umgesetzt werden.
Gast
#5572836
Schade. Roth schrieb: > Gibt es sowas wie with in C ? Wenn du sagen wuerdest, wo das herkommt, dann koennte man dir auch helfen. Meinst du das with aus Python? Beschreib doch mal was du machen willst.
Gast
#5572842
Kaj G. schrieb: > Wenn du sagen wuerdest, wo das herkommt, dann koennte man dir auch > helfen. Meinst du das with aus Python? Beschreib doch mal was du machen > willst. mh? Ich kenne With eigentlich aus vielen Sprachen. VB/VBA z.B. In TC oder Borland Pascal waren sogar kaskadierte With-Strukturen möglich. Das spart unheimlich Buchstaben. Wegen der Übersicht, meine ich. Aktuell habe ich ein Struct-Array in mehreren Dimensionen. Um auf ein Element zuzugreifen, muss ich ohne With immer den kompletten Namen mit allen Indices benennen. Ist ja kein Problem, erzeugt halt nur unschöne, lange Zeilen... Wenn es Dir darum geht: Du kannst jederzeit einen Pointer auf die Struktur o.ä. bestimmen und den anstelle der komplett durchreferenzierten und ausdeklinierten Struktur verwenden. Ich hatte angenommen, Du wolltest Strukturelemente iterieren. (So lange ist's schon her, daß ich mal Pascal verwendet habe, daß ich das glatt vergessen habe ...) Also: Statt
kannst Du auch schreiben:
(annehmend, daß das Array laber[] vom Typ laberstruct ist). Das dürfte Deinem with bla[5].laber[x] entsprechen.
Gast
#5572869
Rufus schrieb: > Da eine Struktur Elemente der unterschiedlichsten Typen enthalten kann, > zur Laufzeit aber der Typ einer Variablen nicht bestimmt werden kann, > könnte ein entsprechendes Konstrukt auch nicht sinnvoll umgesetzt > werden. Das Pascal-With ist ne rein statische Compile-Time-Klamotte und könnte problemlos in C implementiert werden.
Gast
#5572872
Roth schrieb: > Ich kenne With eigentlich aus vielen Sprachen. VB/VBA z.B. In TC > oder Borland Pascal waren sogar kaskadierte With-Strukturen möglich. Das > spart unheimlich Buchstaben. Wegen der Übersicht, meine ich. Ich finde, das war das genaue Gegenteil von übersichtlich. Bei bisher nicht bekannten Quellcode war es auf den ersten Blick überhaupt nicht nachvollziehbar was bei kaskadierten with-Anweisungen genau gesetzt wurde. foobar schrieb: > Das Pascal-With ist ne rein statische Compile-Time-Klamotte und könnte > problemlos in C implementiert werden. Das hat sich mittlerweile geklärt, s.o. Ich dachte zunächst an den Wunsch, Strukturelemente zu iterieren (etwas, was mit VB und "Variant" o.ä. möglich ist), und das ist in C nicht möglich.
Gast
#5572879
> Ich finde, das war das genaue Gegenteil von übersichtlich.
Allerdings. Innerhalb eines with-Blocks weiß man nie genau, welche
Variablen gerade verdeckt werden. Da packt dann irgendwer nen
zusätzliches Feld (z.b. count oder i) in ne Struktur und bisher
korrekter Kode spinnt auf einmal.
ist schade, würde ich mir auch wünschen, aber ist nicht.
Gast
#5572896
Tom schrieb: > Ich finde, das war das genaue Gegenteil von übersichtlich. Findet ihr ? Im Beispiel VBA sieht das so aus: Standard:
With-Version:
Was ist daran unübersichtlich?
Gast
#5572900
Roth schrieb: > Was ist daran unübersichtlich? Tom schrieb: > bei kaskadierten with-Anweisungen Wer lesen kann ist klar im Vorteil
Gast
#5572901
> Was ist daran unübersichtlich?
Schachtel mal 2 oder mehr with-Statements und klamüser dann raus, welche
Zugriff was referenziert. Bei Pascal war es noch schlimmer, da der
führende Punkt nicht vorhanden war:
Das ist vollkommen nichtssagend, wenn man nicht die aktuellen Definition beider Objekte genau kennt.
Gast
#5572912
Roth schrieb: > Im Beispiel VBA sieht das so aus: in c so:
> Was ist daran unübersichtlich?
Es verleitet dazu, lange statt sprechende Variablennamen zu haben und
die dann zu "verstecken".
Tipparbeit zu sparen ist nur für absolute Beginner (bzw.
Wiedereinsteiger) ein Issue, da bei denen das Schreiben den Löwenanteil
hat. Bei Profis ist die Lesbarkeit viel wichtiger. Und die erhöht sich
weder mit langen Variablennamen noch mit deren Aliasing. Am Ende sind 10
Zeilen am Tag in etwa die Größenordnung eines Softwerkers. Da überleg
mal, wieviel davon Tipparbeit ist.
Gast
#5572934
Achim S. schrieb: > nur für absolute Beginner (bzw. Wiedereinsteiger) ein Issue Du meinst, wenn man das anderst macht, ist man compliant? Und wenn nicht, muss man halt die requierments solange runterlowern bis es fit
Gast
#5572952
Florian schrieb: > Du meinst, wenn man das anderst macht, ist man compliant? Und wenn > nicht, muss man halt die requierments solange runterlowern bis es fit was meinst Du damit in Bezug auf meine Ausführungen zu Roth schrieb: > In TC > oder Borland Pascal waren sogar kaskadierte With-Strukturen möglich. Das > spart unheimlich Buchstaben. Wegen der Übersicht, meine ich. Sobald jemand ein echtes Projekt programmiert, ist "Tipparbeit" beim Quelltext das geringste Problem.
Gast
#5573070
Rufus Τ. F. schrieb: > kannst Du auch schreiben: > >
Achim S. schrieb: > in c so: >
Funktioniert, danke :-) Verrät mir noch jemand, was der Unterschied zwischen
und
ist? Ich habe seit 25J. nix mehr mit C gemacht. Late Binding fällt mir ein bei '->'. Ist das so? PS: Mit dem '.' lässt es sich nicht compilieren (war aber "gefühlsmäßig" zu erwarten). Nur weiß ich nicht, warum ....
Gast
#5573074
Roth schrieb: > Verrät mir noch jemand, was der Unterschied zwischen >
> und >
> ist? Ich habe seit 25J. nix mehr mit C gemacht. Late Binding fällt mir > ein bei '->'. Ist das so? PS: Mit dem '.' lässt es sich nicht > compilieren (war aber "gefühlsmäßig" zu erwarten). Nur weiß ich nicht, > warum ....
greift auf das Element MeinWert3 zu, wenn pw z.B. ein struct ist
dereferenziert den Pointer pw und greift dann auf das Element MeinWert3 zu p->x ist identisch mit (*p).x Roth schrieb: > Verrät mir noch jemand, was der Unterschied zwischen > pw.MeinWert3 und pw->MeinWert3ist? Im ersten Fall ist "pw" eine Variable (vom Typ 'struct irgendwas'), im zweiten Fall ist "pw" ein Zeiger auf eine Variable (vom Typ 'struct irgendwas').
Gast
#5573142
Stichworte: with, pointer vs Stichworte: Übersetzungszeit, Laufzeit Uuups .... Äpfel vs Birnen schrieb: > Uuups .... Wenn man sich selektiv einzelne Postings aus einem Thread heraussucht und sich Mühe gibt, nachfolgende Postings nicht zu lesen, die Missverständnisse aufklären, dann kann man zu so einem Schluss kommen. Wie wäre es, einen Lerngang im sinnerfassenden Lesen zu belegen?
Gast
#5574303
Das Forum ist klasse. Hier kann man immer was lernen. Danke an alle :-) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|