Hallo Ich komme aus der Pascal WElt und habe C++ so gelernt das ich µC programmieren kann. Ich bin da nicht gut aber ein NOOP bin ich auch nicht mehr. Meine Frage in der Arduino Welt hat man ob Libraries wo im header Code verarbeitet wird, das ist doch im Standard C99 nicht erlaubt oder verpasse ich da was, weil der Compiler mit redefinition nervt und Kontanten werden im main.cpp definiert (PlatformIO) wo dann Subroutinen zugreifen sollen, geht so etwas? Eine schöne Woche wünsche ich euch.
Wow. Ich hab deinen Beitrag 3x gelesen und kann absolut nicht erkennen, was deine Frage ist.
Ja, absolut keinen Ahnung - bitte nicht den Gedankenfluss Tippen - das versteht keiner
Egal, was du eigentlich fragen wolltest, das Zauberwort heißt inline. Oliver
Header sind nur Quelltextfragmente in anderen Dateien. Dort kannst Du machen, was Du willst, jedenfalls das gleiche wie in C Dateien. Probleme entstehen erst, wenn Du damit Code mehrfach in einer Übersetzungseinheit stehen hast, der nur einmal da sein darf. Z.b static int i; Oder wenn in verschiedenen Files etwas steht, was nur einmal da sein darf, z.b.bint i; (Beispiele auf File-scope)
Der C-Header ist fast dasselbe wie die interface section in einem Delphi program. Da sind nur definitionen und globales Zeug.
Joggel E. schrieb: > Der C-Header ist fast dasselbe wie die interface section in einem Delphi > program. Da sind nur definitionen und globales Zeug. naja. Da ist eher der Vergleich zu include Dateien in Pascal angebracht.
Oliver S. schrieb: > Egal, was du eigentlich fragen wolltest, das Zauberwort heißt inline. und die drei musketiere
1 | #ifndef
|
2 | #define
|
3 | #endif
|
Ein schönes Beispiel für "Header-Only-Code" ist die Mozzi-Library: https://github.com/sensorium/Mozzi Eine High-Performance Sound Library nicht nur aus Templates. Siehe dieses Beispiel: https://github.com/sensorium/Mozzi/blob/master/DCfilter.h
Joggel E. schrieb: > Der C-Header ist fast dasselbe wie die interface section in einem Delphi > program. Da sind nur definitionen und globales Zeug. Das ist nur eine Empfehlung der Übersicht halber, auch die Extensions C und H haben eigentlich keine Funktion. Wenn man sich unbedingt persönlich profilieren will kann man sein ganzes C-Programm in ein H-File schreiben oder auch umgekehrt. Im Gegensatz dazu haben in Pascal/Delphi die Abschnitte Interface und Implementation in einer Unit tatsächlich unterschiedliche Funktionen, aber das ist auch kein Standard-Pascal mehr. Georg
Header sind reine Textersetzung. Du kannst auch sowas machen:
1 | void blubb(void) |
2 | #include "textbausteine/geschweifteklammerauf.txt" |
3 | doit() |
4 | #include "textbausteine/semikolon.txt" |
5 | #include "textbausteine/geschweifteklammerzu.txt" |
In einer Hinsicht verhalten sich C-Header wie Pascal-Units: Nur dadurch, das Du sie einbindest, tut sich nichts. Außer das der Code aufgebläht wird. Sowohl in Pascal als auch in C musst Du irgendwie initialisieren. Manchmal heißen die dazu nötigen Funktionen auch so. Aber manchmal geht das Ganze auch ohne Initialisierung vonstatten - sowohl in C als auch in Pascal. Für die Erbsenzähler: Ja, es gibt Methoden, das zu umgehen. Ist aber nicht üblich.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.