expertenaustausch > comp.lang.* > comp.lang.c

Heinz Saathoff (06.09.2019, 08:41)
Moin,

ich habe für die MicroChip PIC-Controller den
Knudsen C-Compiler im Einsatz. Er hat zwar
viele Limitierungen, aber tut ansonsten seine
Dienste.
Heute bekam ich einen Fehler bei einer Funktion

void XYZ(int line) {}

Markiert wird 'line'.

Im Handbuch fand ich im Kapitel
"Standard C keywords used"
folgendes:
"The remaining standard C keywords are detected
and compiled. One is ignored (register), and
the rest cause a warning to be
printed (volatile, line)."

Ich kann mich nicht daran erinnern, dass 'line' ein
Keyword sein soll.

- Heinz
Claus Reibenstein (06.09.2019, 12:20)
Heinz Saathoff schrieb am 06.09.2019 um 08:41:

[..]
> printed (volatile, line)."
> Ich kann mich nicht daran erinnern, dass 'line' ein
> Keyword sein soll.


Der letzte mir vorliegende Committee Draft ISO/IEC 9899:201x vom 12.
April 2011 listet "line" nicht als Keyword auf, und auch die älteren
Standards erwähnen es nicht. Von daher dürfte hier wohl ein Fehler
vorliegen.

Wäre mal einen Bugreport an den Hersteller wert. Mal schauen, was der
dazu sagt.

Gruß
Claus
Helmut Schellong (06.09.2019, 12:43)
On 09/06/2019 08:41, Heinz Saathoff wrote:
> Moin,
> ich habe für die MicroChip PIC-Controller den
> Knudsen C-Compiler im Einsatz. Er hat zwar
> viele Limitierungen, aber tut ansonsten seine
> Dienste.
> Heute bekam ich einen Fehler bei einer Funktion
> void XYZ(int line) {}
> Markiert wird 'line'. [...]
> Ich kann mich nicht daran erinnern, dass 'line' ein
> Keyword sein soll.


Richtig.
'line' ist n.m.K. kein Keyword.

Der aktuelle Standard (der 4.) ist C18, wie ich in einem
vorhergehenden Posting schrieb.
Ich kenne auch von daher kein 'line'.

Außerdem haben fast alle neuen Keywords die Syntax '_Xyyy'.
Beispielsweise '_Bool'.
Es würde sehr wahrscheinlich auch '_Line' sein, weil 'line'
sehr wahrscheinlich häufig als Makro-Name existiert, so wie 'bool'.
Christian Weisgerber (06.09.2019, 14:35)
On 2019-09-06, Heinz Saathoff <newshsaat> wrote:

> ich habe für die MicroChip PIC-Controller den
> Knudsen C-Compiler im Einsatz.


> Im Handbuch fand ich im Kapitel
> "Standard C keywords used"
> folgendes:
> "The remaining standard C keywords are detected
> and compiled. One is ignored (register), and
> the rest cause a warning to be
> printed (volatile, line)."


Da die Auflistung der Schlüsselwörter davor auch die Präprozessor-
Anweisungen einschließt, wird hier #line gemeint sein.
Heinz Saathoff (06.09.2019, 16:54)
Christian Weisgerber schrieb:

>On 2019-09-06, Heinz Saathoff <newshsaat> wrote:
>Da die Auflistung der Schlüsselwörter davor auch die Präprozessor-
>Anweisungen einschließt, wird hier #line gemeint sein.


Aber als Präprozessor-Anweisung sollte das nur mit vorangestelltem '#'
ausgewertet werden.
Ich hab's gerade mal mit den Namen 'define' und 'elif' probiert. Die
werden ebenfalls als Fehler angezeigt.
Beim PC-Compiler kann ich die Namen anstandslos als Variablennamen
verwenden.
Der CC5X schmeißt anscheinend alle Worte in einen Topf.
Nun da ich das weiß kann ich damit leben.

- Heinz
Helmut Schellong (06.09.2019, 18:03)
On 09/06/2019 16:54, Heinz Saathoff wrote:
> Christian Weisgerber schrieb:
> Aber als Präprozessor-Anweisung sollte das nur mit vorangestelltem '#'
> ausgewertet werden.


Ja, es ist eine Präprozessor-Direktive, die nur in einer
entsprechenden Zeile erkannt wird.
Stefan Reuther (06.09.2019, 19:01)
Am 06.09.2019 um 16:54 schrieb Heinz Saathoff:
> Christian Weisgerber schrieb:
> Aber als Präprozessor-Anweisung sollte das nur mit vorangestelltem '#'
> ausgewertet werden.
> Ich hab's gerade mal mit den Namen 'define' und 'elif' probiert. Die
> werden ebenfalls als Fehler angezeigt.
> Beim PC-Compiler kann ich die Namen anstandslos als Variablennamen
> verwenden.
> Der CC5X schmeißt anscheinend alle Worte in einen Topf.
> Nun da ich das weiß kann ich damit leben.


Der behauptet ja auch nicht, C zu können, insofern würde ich da noch
einige Überraschungen erwarten.

"The design priority was not to provide full ANSI C support, but to
enable the best possible usage of the limited code and RAM resources."

"unsigned long i16; // 16 bit unsigned"

"uns32 a; a.7 = 1; // set bit 7 of variable a to 1"

....sowas finde ich jedenfalls in dem Handbuch
<http://www.bknd.com/doc/cc5x-35.pdf>.

Stefan
Ähnliche Themen