![]() |
|
|
|||||||
| Portal | Wiki | IRC-Chat | Registrieren | Benutzerliste | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
![]() |
|
|
Themen-Optionen | Thema bewerten | Ansicht |
|
|
#1 |
|
Profifragensteller
|
Moin!
Ich verwende in meinen Projekten hin und wieder - eben da wo es nicht anders geht - globale Variablen. Die fasse ich dann meist in einem struct zusammen, etwa so: Code:
Code:
So, gibt es dazu eine allgemeingültige Konvention, an die man sich halten könnte? Wie markiert Ihr Eure "Besonderen" Variablen? Bin gespannt auf Vorschläge... Viele Grüße Herakles |
|
|
|
|
|
#2 |
|
Bicycle User
Registrierungsdatum: Aug 2004
Ort: nuernberg
Beiträge: 2.533
|
baeh!
globale variablen. igittigit ![]() ich mach das ganze immer ueber handles. ein struct, in dem alle variablen stehen die man so braucht, und die wird dann an alle funktionen uebergeben. ist praktisch das gleiche, mit dem unterschied dass die alle sauber auf dem heap oder im stack landen. Code:
aber auch sonst hat es definitiv den vorteil dass du weisst wie deine globalen variablen heissen; weil sie an einer einzigen stelle im code definiert sind. und nicht holographisch ueber 50 .c-files verteilt.
__________________
Computer science is not about using a computer. It is about unleashing its powers. |
|
|
|
|
|
#3 |
|
Parasprite
|
Ich verwende Kontext-Präfixes:
http://hsk.sourceforge.net/dev/conve...ntions_members
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
|
|
#4 |
|
rm -rf /*
Registrierungsdatum: Jun 2008
Ort: Bremen
Beiträge: 1.079
|
Bei kleinen Programmen in C ist eine globale Variable oftmals das leserlichste. Pointer auf Structs mit dem Kontext rum zu reichen macht den Code komplizierter. Natürlich kann es notwendig sein. Nur ist das ganze kein Selbstzweck. Der Code soll leserlich und wartbar sein nicht beweisen welche Idiome der Autor kennt.
|
|
|
|
|
|
#5 |
|
Parasprite
|
Pointer auf Structs ist schlicht der objektorientierte Ansatz. Wenn das Paradigma angemessen ist, ist das vollkommen in Ordnung und auch alles andere als kompliziert.
Ich verwende globale Variablen immer nur im systemnahen Zusammenhang. Beispiel (ist unheimlich praktisch einfach zu seinem Code linken zu können ):https://sourceforge.net/p/hsk/libs/c.../hsk_isr.h#l84 Interrupt 5 kann von verschiedenen Quellen getriggert werden. Dabei handelt es sich immer um Hardware direkt auf dem µC. Dafür gibt es dann schlicht ein globales struct in dem Module Funktionspointer eintragen können um den Interrupt zu benutzen. Gegenbeispiel hsk_can_msg_create erzeugt CAN Bus Botschaftsobjekte und gibt den Typ hsk_can_msg zurück. Technisch ist einfach ein unsigned char, aber funktional ist das wie bei Dettus ein Pointer auf ein struct. Nur dass das struct ein Satz Register in einem separaten Hardware-Modul ist, auf das ich über einen Adressbus zugreifen kann. (Mit 3328 Byte Speicher verschwendet man keinen Arbeitsspeicher für Informationen, die sowieso in Hardware Registern liegt - selbst wenn man damit etwas Rechenzeit sparen kann, weil man den Umweg über den Adressbus spart). Alle hsk_can_msg_* Funktionen bekommen das als ersten Parameter. In einer Programmiersprache mit Klassen wären das die Methoden einer hsk::can::Message Klasse und die create Funktion wäre der Konstruktor.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything. |
|
|
|
![]() |
| Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste) | |
| Themen-Optionen | |
| Ansicht | Thema bewerten |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| [C] Variablen initialisieren | Herakles | Programmieren | 10 | 10.11.2010 16:48 |
| X Terminal dass mit Tasten markieren kann? | Maxx | FreeBSD - Anwendungen und Ports | 5 | 14.08.2006 22:03 |
| lokale Variablen in awk | Kamikaze | Programmieren | 4 | 17.07.2006 17:12 |
| Variablen Wert vergleichen | cat1510 | Programmieren | 8 | 01.12.2005 12:47 |
| Variablen in make "unsetten" | cirad | FreeBSD - Anwendungen und Ports | 2 | 14.12.2003 07:55 |