Zitat:
Die Möglichkeit gibt es: Einfach in der Funktion nicht auf die Datenfelder schreibend zugreifen.
|
Auf die Antwort hab ich gewartet.

Ich war nur gespannt wers sagen wird.
Selbiges würde aber auch für alle anderen Variablen gelten, also warum gibts dann aberhaupt const?
Zitat:
Eine andere Variante gibt es nicht, sollte eigentlich logisch sein ...
|
Logisch ja. Aber nicht alles was mir logisch erscheint ist der Weisheit letzter Schluss. Oder anders gesagt, ich sehe keine Möglichkeit, aber vielleicht gibt es sie trotzdem und wer anderer hat einen Idee.
Zitat:
Mit anderen Worten schaut die Sache letztgültig so aus ( *seufz* es ist so, nicht eine Bemerkung in Deine Richtung):
|
Inwiefern hät ich das auf mich beziehen sollen?
Zitat:
1. Struktur allozieren
2. Strukturfelder initialisieren
3. Struktur in Arbeitsbereich (Strukturkopie) kopieren
4. Funktionsaufruf mit den bösen Veränderungen machen mittels Übergabe eines Adresszeigers auf die Strukturkopie
5. Glücklich sein, daß die Originalstruktur so bestehen bleibt wie sie vor dem Aufruf der Funktion ausgesehen hat, sprich die Weiterverwendung der ursprünglichen Werte geht durch das Kopieren und Verwenden der Kopie anstatt des Originals in Ordnung
mfg
Kikakater [/b]
|
Ich hab nichts dagegen einfach Pointer auf die Struktur oder ihre Elemente zu übergeben. Falls es jedoch eine Möglichkeit gibt den Inhalt zu schützen und trotzdem mit Pointern zu Arbeiten, so gehe ich gerne diesen Weg, im Sinne von Fehlerquellenminimierung.
2 Strukturen mit den selben Werten, eine zum Arbeiten und eine als Backup erscheint mir nicht zweckmässig.
Ein Beispiel: ich hab die Oberstruktur main. Diese enthält ALLE globalen Daten, alles was irgendwie von mehr als einer Funktion des ganzen Programms benutzt werden muß, wie zum Beispiel main.config.{ganzvieleconfigdaten} als auch main.workload.{1000 int variablen die modifiziert werden}. Die funktion funktion(&main.workload,&main.config) modifiziert jetzt die Werte der 1000 int variablen in main.workload. Auf main.config{*.*} wird nur lesend zugegriffen (das kann ich ja selbst bestimmen). Dann wäre es aber schön, wenn man die Configurationsstruktur auch nur lesbar übergeben kann. (wie beim öffnen einer Datei, da kann ich ja auch aussuchen, ob r_only, rw, usw). Mit 2 Strukturen könnte ich anschliessend mainkopie.config nach main.config kopieren. So bleibt meine Konfiguration zwar sicher erhalten, da ja alle Modifikation in main.config überschrieben werden (wohlgemerkt, ich würde main.config nicht bewußt in der Funktion modfizieren. Prinzipiell ist es aber ein Sicherheitsrisiko wenn Konfigurationen von überall modifiziert werden können), aber das ganze wird ziemlich unübersichtlich. (@kikakater: allerdings hatte ich die Idee erst durch das Lesen deines Postings). Und speichersparend ist das auch nicht.