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.
Gast
#6146399
Wow. Ich hab deinen Beitrag 3x gelesen und kann absolut nicht erkennen, was deine Frage ist.
Gast
#6146432
Ja, absolut keinen Ahnung - bitte nicht den Gedankenfluss Tippen - das versteht keiner
Egal, was du eigentlich fragen wolltest, das Zauberwort heißt inline. Oliver
Gast
#6146449
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.
Gast
#6146702
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.
Gast
#6146752
Oliver S. schrieb: > Egal, was du eigentlich fragen wolltest, das Zauberwort heißt inline. und die drei musketiere
1 | |
2 | |
3 | |
Die Frage zielt vielleicht auf die ODR ab? https://en.m.wikipedia.org/wiki/One_Definition_Rule
Gast
#6146759
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
Gast
#6146791
Martin M. schrieb: > Standard C99 nicht erlaubt Martin M. schrieb: > main.cpp C != C++
Gast
#6147277
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
Gast
#6147357
Header sind reine Textersetzung. Du kannst auch sowas machen:
1 | |
2 | |
3 | |
4 | |
5 | |
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.