Forum: Compiler & IDEs Schreibweise von Oder | und Pointer ändern


von peter (Gast)


Lesenswert?

Hallo, guten Tag.
Die C-Control-Pro kennt nicht den gesammten C-Syntax.

Eine andere Schreibweise für das "Oder"

XMCRA |= (1 << SRW00) | (1 << SRW01) | (1 << SRW11) ;
Funktioniert das bitte auch mit dieser Schreibweise :
XMCRA = XMCRA |(1 << SRW00) | (1 << SRW01) | (1 << SRW11) ;

Auch der Pointer wird nicht erkennt.
Durch was kann man ihn *p ersetzen ?
unsigned char *p,v ;
p=0x2000 ;
*p=0x55 ;

Danke.

Gruss
peter

von Oliver (Gast)


Lesenswert?

Nun ja, ob x |= y das selbe ergibt, wie x = x | y, sollte dir jedes noch 
so schwache C-Buch oder auch jede online-Beschreibung der C-Operatoren 
verraten.

Das mit dem Pointer wird schwierig. Wen die Sprache, mit der die 
C-Control da programmiert werden soll, keine pointer kennt, dann kennt 
die halt keine.

Genaueres sollte dir aber das Handbuch dazu verraten. char *sind ja nun 
in der Regel Strings, und irgend etwas vergleichbares sollte es schon in 
dem komischen C-Control-Dialekt geben.

Soweit ich weiß geibtes aber Mittel und Wege, selbsterstellte hex-Files 
auf die C-Control aufzuspielen. Also erstelle dein Programm mit dem 
Coompiler, für das es gedacht ist, und spiel das fertige File auf die 
C-Control.

Oliver

von Yalu X. (yalu) (Moderator)


Lesenswert?

Wieso wird eigentlich auf der C-Control Pro überhaupt dieses CompactC
verwendet? Wenn ich das richtig verstanden habe, werden da Programme,
die in einem C-Subset geschrieben sind, in einen Byte-Code kompiliert,
der dann von einem auf dem Mikrocontroller installierten Interpreter
ausgeführt wird.

Der in der C-Control Pro enthaltene ATmega könnte doch genauso gut mit
dem GCC programmiert werden. Damit hätte man ein vollständiges und
standardkonformes C zur Verfügung, und die Programme würden um ein
Vielfaches schneller abgearbeitet werden.

In

  http://www.c-control-pro.de/documentation/compactc.htm

ist zu lesen:
1
  Der Sprachumfang von CompactC entspricht im wesentlichen ANSI-C,
2
  […]
3
  Folgende Sprachkonstrukte fehlen:
4
 
5
  •  structs / unions
6
  •  typedef
7
  •  enum
8
  •  Konstanten (const Anweisung)
9
  •  Zeigerarithemetik

Naja, das würde ich dann aber nicht mehr als "im wesentlichen ANSI-C"
bezeichnen.

von Oliver (Gast)


Lesenswert?

Yalu X. schrieb:
> Wieso wird eigentlich auf der C-Control Pro überhaupt dieses CompactC
> verwendet?

Weil das Produkt für eine Zielgruppe gedacht ist, für die richtiges C zu 
kompliziert ist...

Oliver

von Yalu X. (yalu) (Moderator)


Lesenswert?

Oliver schrieb:
>> Wieso wird eigentlich auf der C-Control Pro überhaupt dieses CompactC
>> verwendet?
>
> Weil das Produkt für eine Zielgruppe gedacht ist, für die richtiges C zu
> kompliziert ist...

Ja, wahrscheinlich war das die Intention, die allerdings nicht zu Ende
gedacht wurde:

Auch ein vollwertiger C-Compiler zwingt den Programmieranfänger ja
nicht, Dinge wie Strukturen und Zeigerarithmetik zu nutzen.

Umgekehrt zwingt aber der kastrierte C-Compiler den Fortgeschrittenen
C-Programmierer, sich mit dessen Restriktionen zu beschäftigen.

Somit bringt CompactC gegenüber GCC nur Nachteile.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Ohne dass es bei der ursprünglichen Fragestellung hilft und von einem, 
der mit diesen Baugruppen noch nicht gearbeitet hat:
Hintergrund für den Bytecoderinterpreteransatz scheint mir eher, dass 
man eine Mini-SPS anbieten will. Die Beschreibung für Threads in der 
Anleitung deutet sehr darauf hin. Allerdings erscheint das nicht so 
wirklich gut implementiert zu sein, wenn Bibliotheksfunktionen Threads 
blockieren können ("Auch interne Interpreterfunktionen gelten als ein 
Zyklus. Da z.B. Serial_Read wartet, bis ein Zeichen von der seriellen 
Schnittstelle ankommt, kann in Ausnahmefällen ein Zyklus sehr lange 
dauern."). 'Richtiges' preemptives RTOS in einer Library zu verstecken 
und aus der IDE heraus einen Compiler aufzurufen, der AVR Maschinencode 
erzeugt, würde der Laufzeit zugute kommen. Aber das wird jetzt zu OT...

Zum ersten Beitrag und nur auf Grundlage der Anleitung:
- Operatoren mit Zuweisung (also z.B. |= aus der Frage) sind nicht in 
der Anleitung beschrieben und sind somit bestenfalls undokumentierte 
Funktionalität.
- Zu Pointern gibt es nahezu keine Hinweise und die Forumlierung "Man 
kann zur Zeit nur Arrays "by Reference" übergeben!." deutet auf sehr 
eingeschränkte (keine?) Funktionalität in dieser Richtung hin.


Es gibt übrigens mindestens ein Forum, in dem die Fragen besser 
aufgehoben sind: http://ccpro.cc2net.de/ .

von Michael (Gast)


Lesenswert?

Martin Thomas schrieb:
> - Zu Pointern gibt es nahezu keine Hinweise ...

oder doch?

Yalu X. schrieb:
> Folgende Sprachkonstrukte fehlen:
> ...
>   •  Zeigerarithemetik

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
Noch kein Account? Hier anmelden.