Allowed character code zero to be remapped with other character codes.
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<title>cc65 Users Guide
|
||||
<author><url url="mailto:uz@cc65.org" name="Ullrich von Bassewitz">,<newline>
|
||||
<url url="mailto:gregdk@users.sf.net" name="Greg King">
|
||||
<date>2016-04-22
|
||||
<date>2016-06-11
|
||||
|
||||
<abstract>
|
||||
cc65 is a C compiler for 6502 targets. It supports several 6502 based home
|
||||
@@ -478,15 +478,15 @@ Here is a description of all the command line options:
|
||||
|
||||
|
||||
<label id="option-W">
|
||||
<tag><tt>-W name[,name]</tt></tag>
|
||||
<tag><tt>-W name[,name,...]</tt></tag>
|
||||
|
||||
This option allows to control warnings generated by the compiler. It is
|
||||
followed by a comma separated list of warnings that should be enabled or
|
||||
followed by a comma-separated list of warnings that should be enabled or
|
||||
disabled. To disable a warning, its name is prefixed by a minus sign. If
|
||||
no such prefix exists, or the name is prefixed by a plus sign, the warning
|
||||
is enabled.
|
||||
|
||||
The following warning names are currently recognized:
|
||||
The following warning names currently are recognized:
|
||||
<descrip>
|
||||
<tag><tt/const-comparison/</tag>
|
||||
Warn if the result of a comparison is constant.
|
||||
@@ -494,10 +494,13 @@ Here is a description of all the command line options:
|
||||
Treat all warnings as errors.
|
||||
<tag><tt/no-effect/</tag>
|
||||
Warn about statements that don't have an effect.
|
||||
<tag><tt/remap-zero/</tag>
|
||||
Warn about a <tt/<ref id="pragma-charmap" name="#pragma charmap()">/
|
||||
that changes a character's code number from/to 0x00.
|
||||
<tag><tt/struct-param/</tag>
|
||||
Warn when passing structs by value.
|
||||
<tag><tt/unknown-pragma/</tag>
|
||||
Warn about known #pragmas.
|
||||
Warn about #pragmas that aren't recognized by cc65.
|
||||
<tag><tt/unused-label/</tag>
|
||||
Warn about unused labels.
|
||||
<tag><tt/unused-param/</tag>
|
||||
@@ -506,11 +509,11 @@ Here is a description of all the command line options:
|
||||
Warn about unused variables.
|
||||
</descrip>
|
||||
|
||||
The full list of available warning names may be retrieved by using the
|
||||
The full list of available warning names can be retrieved by using the
|
||||
option <tt><ref id="option-list-warnings" name="--list-warnings"></tt>.
|
||||
|
||||
You may also use <tt><ref id="pragma-warn" name="#pragma warn"></tt> to
|
||||
control this setting for smaller pieces of code from within your code.
|
||||
You may use also <tt><ref id="pragma-warn" name="#pragma warn"></tt> to
|
||||
control this setting, for smaller pieces of code, from within your sources.
|
||||
|
||||
</descrip><p>
|
||||
|
||||
@@ -931,34 +934,38 @@ parameter with the <tt/#pragma/.
|
||||
<sect1><tt>#pragma charmap (<index>, <code>)</tt><label id="pragma-charmap"><p>
|
||||
|
||||
Each literal string and each literal character in the source is translated
|
||||
by use of a translation table. This translation table is preset when the
|
||||
compiler is started depending on the target system, for example to map
|
||||
ISO-8859-1 characters into PETSCII if the target is a commodore machine.
|
||||
by use of a translation table. That translation table is preset when the
|
||||
compiler is started, depending on the target system; for example, to map
|
||||
ISO-8859-1 characters into PETSCII if the target is a Commodore machine.
|
||||
|
||||
This pragma allows to change entries in the translation table, so the
|
||||
translation for individual characters, or even the complete table may be
|
||||
adjusted.
|
||||
adjusted. Both arguments are assumed to be unsigned characters with a valid
|
||||
range of 0-255.
|
||||
|
||||
Both arguments are assumed to be unsigned characters with a valid range of
|
||||
1-255.
|
||||
|
||||
Beware of two pitfalls:
|
||||
|
||||
<itemize>
|
||||
<item>The character index is actually the code of the character in the
|
||||
C source, so character mappings do always depend on the source
|
||||
character set. This means that <tt/#pragma charmap/ is not
|
||||
portable -- it depends on the build environment.
|
||||
<item>While it is possible to use character literals as indices, the
|
||||
result may be somewhat unexpected, since character literals are
|
||||
itself translated. For this reason I would suggest to avoid
|
||||
character literals and use numeric character codes instead.
|
||||
</itemize>
|
||||
Beware of some pitfalls:
|
||||
<itemize>
|
||||
<item>The character index is actually the code of the character in the
|
||||
C source; so, character mappings do always depend on the source
|
||||
character set. That means that <tt/#pragma charmap()/ is not
|
||||
portable -- it depends on the build environment.
|
||||
<item>While it is possible to use character literals as indices, the
|
||||
result may be somewhat unexpected, since character literals are
|
||||
themselves translated. For that reason, I would suggest to avoid
|
||||
character literals, and use numeric character codes instead.
|
||||
<item>It is risky to change index <tt/0x00/, because string functions depend
|
||||
on it. If it is changed, then the <tt/'\0'/ at the end of string
|
||||
literals will become non-zero. Functions that are used on those
|
||||
literals won't stop at the end of them. cc65 will warn you if you do
|
||||
change that code number. You can turn off that <tt/remap-zero/ warning
|
||||
if you are certain that you know what you are doing (see <tt/<ref
|
||||
id="pragma-warn" name="#pragma warn()">/).
|
||||
</itemize>
|
||||
|
||||
Example:
|
||||
<tscreen><verb>
|
||||
/* Use a space wherever an 'a' occurs in ISO-8859-1 source */
|
||||
#pragma charmap (0x61, 0x20);
|
||||
/* Use a space wherever an 'a' occurs in ISO-8859-1 source */
|
||||
#pragma charmap (0x61, 0x20);
|
||||
</verb></tscreen>
|
||||
|
||||
|
||||
@@ -1129,7 +1136,7 @@ parameter with the <tt/#pragma/.
|
||||
|
||||
Switch compiler warnings on or off. "name" is the name of a warning (see the
|
||||
<tt/<ref name="-W" id="option-W">/ compiler option for a list). The name is
|
||||
either followed by "pop", which restores the last pushed state, or by "on" or
|
||||
followed either by "pop", which restores the last pushed state, or by "on" or
|
||||
"off", optionally preceeded by "push" to push the current state before
|
||||
changing it.
|
||||
|
||||
@@ -1144,6 +1151,7 @@ parameter with the <tt/#pragma/.
|
||||
#pragma warn (unused-param, pop)
|
||||
</verb></tscreen>
|
||||
|
||||
|
||||
<sect1><tt>#pragma writable-strings ([push,] on|off)</tt><label id="pragma-writable-strings"><p>
|
||||
|
||||
Changes the storage location of string literals. For historical reasons,
|
||||
|
||||
Reference in New Issue
Block a user