Discussion:
Ist 'line' ein keyword?
(zu alt für eine Antwort)
Heinz Saathoff
2019-09-06 06:41:18 UTC
Permalink
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
2019-09-06 10:20:26 UTC
Permalink
Post by Heinz Saathoff
ich habe für die MicroChip PIC-Controller den
Knudsen C-Compiler im Einsatz. [...]
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"
"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.
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
2019-09-06 10:43:17 UTC
Permalink
Post by Heinz Saathoff
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'.
[...]
Post by Heinz Saathoff
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'.
--
Mit freundlichen Grüßen
Helmut Schellong ***@schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm
Christian Weisgerber
2019-09-06 12:35:40 UTC
Permalink
Post by Heinz Saathoff
ich habe für die MicroChip PIC-Controller den
Knudsen C-Compiler im Einsatz.
Im Handbuch fand ich im Kapitel
"Standard C keywords used"
"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.
--
Christian "naddy" Weisgerber ***@mips.inka.de
Heinz Saathoff
2019-09-06 14:54:42 UTC
Permalink
Post by Christian Weisgerber
Post by Heinz Saathoff
ich habe für die MicroChip PIC-Controller den
Knudsen C-Compiler im Einsatz.
Im Handbuch fand ich im Kapitel
"Standard C keywords used"
"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.
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
2019-09-06 16:03:44 UTC
Permalink
Post by Heinz Saathoff
Post by Christian Weisgerber
Post by Heinz Saathoff
ich habe für die MicroChip PIC-Controller den
Knudsen C-Compiler im Einsatz.
Im Handbuch fand ich im Kapitel
"Standard C keywords used"
"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.
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.
--
Mit freundlichen Grüßen
Helmut Schellong ***@schellong.biz
www.schellong.de www.schellong.com www.schellong.biz
http://www.schellong.de/c.htm
Stefan Reuther
2019-09-06 17:01:46 UTC
Permalink
Post by Heinz Saathoff
Post by Christian Weisgerber
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.
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

Loading...