Wie versteht man den Code hier
-
Hi,
wie versteht man den Code hier?
#define ABC 2 UINT8 XDATA abc = {ABC};
Sind ABC und abc verschieden?
MfG
Campus
-
Hallo
ABC ist immer 2 und abc ist eine Variable. Wenn ich das richtig sehe.
chrische
-
campus schrieb:
Hi,
wie versteht man den Code hier?
#define ABC 2 UINT8 XDATA abc = {ABC};
Sind ABC und abc verschieden?
MfG
Campus#define wird vom Präprozessor aufgelöst, bevor das Programm kompiliert wird.
UINT8 ist wahrscheinlich genau so eine Präprozessordirektive und wird für einen 'U' (unsigned) 'INT' (Ganzzahlwert) '8' (8 Bit Länge) benutzt. XDATA ist sicher auch eine Präprozessordirektive. Allerdings weiß ich nicht, was sie bedeuten soll.
Also steht dort nach dem Präprozessor und vor dem Kopilieren im Prinzip:unsigned char /*XDATA*/ abc = {2};
-
DarthZiu schrieb:
XDATA ist sicher auch eine Präprozessordirektive. Allerdings weiß ich nicht, was sie bedeuten soll.
sowas wie 'XDATA' wird oft genommen, um ein gewisses speichersegment anzusprechen (eXtendet memory??). ist aber nur 'ne vermutung
-
ich weis nicht ob du das meinst was ich hier schreibe aber:
ABC is eine konstante und überall wo du sie angiebst steht sie für 2
abc is eine variable und du hast sie mit ABC also mit 2 definiertfalls du meinst ob sie den gleichen wert haben dann ja
-
Gut,
wie schon erwähnt, löst der Präprozessor das ABC rein durch textuelles Ersetzen mit einer 2 auf. Das sollte er überdies Case- sensitive tun.
Der UINT8- Kram ist nicht ANSI. Meistens sind es macros oder andere defines, die anderswo im Programmcode zu suchen sind.
In aller Regel findet man sowas in embedded- Paketen, die letztendlich ihre Linkhinweise (also, wo im Speicher das Compilat zu landen hat) so verpacken.Aber wie schon gesagt, rein mit ANSI kann man die Frage nicht vollständig beantworten.