1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-08 15:29:37 +00:00

Merge pull request #462 from pmjdebruijn/pragma-message

pragma: add minimalist message pragma implementation
This commit is contained in:
Oliver Schmidt 2017-07-22 16:54:23 +02:00 committed by GitHub
commit f0d760de4a
2 changed files with 30 additions and 0 deletions

View File

@ -1119,6 +1119,23 @@ parameter with the <tt/#pragma/.
remembered and output as a whole when translation is finished.
<sect1><tt>#pragma message (&lt;message&gt;)</tt><label id="pragma-message"><p>
This pragma is used to display informational messages at compile-time.
The message intented to be displayed must be a string literal.
Example:
<tscreen><verb>
#pragma message ("in a bottle")
</verb></tscreen>
Results in the compiler outputting the following to stderr:
<tscreen><verb>
example.c(42): Note: in a bottle
</verb></tscreen>
<sect1><tt>#pragma optimize ([push,] on|off)</tt><label id="pragma-optimize"><p>
Switch optimization on or off. If the argument is "off", optimization is

View File

@ -78,6 +78,7 @@ typedef enum {
PRAGMA_DATASEG, /* obsolete */
PRAGMA_INLINE_STDFUNCS,
PRAGMA_LOCAL_STRINGS,
PRAGMA_MESSAGE,
PRAGMA_OPTIMIZE,
PRAGMA_REGISTER_VARS,
PRAGMA_REGVARADDR,
@ -114,6 +115,7 @@ static const struct Pragma {
{ "dataseg", PRAGMA_DATASEG }, /* obsolete */
{ "inline-stdfuncs", PRAGMA_INLINE_STDFUNCS },
{ "local-strings", PRAGMA_LOCAL_STRINGS },
{ "message", PRAGMA_MESSAGE },
{ "optimize", PRAGMA_OPTIMIZE },
{ "register-vars", PRAGMA_REGISTER_VARS },
{ "regvaraddr", PRAGMA_REGVARADDR },
@ -750,6 +752,13 @@ static void IntPragma (StrBuf* B, IntStack* Stack, long Low, long High)
static void MakeMessage (const char* Message)
{
fprintf (stderr, "%s(%u): Note: %s\n", GetInputName (CurTok.LI), GetInputLine (CurTok.LI), Message);
}
static void ParsePragma (void)
/* Parse the contents of the _Pragma statement */
{
@ -849,6 +858,10 @@ static void ParsePragma (void)
FlagPragma (&B, &LocalStrings);
break;
case PRAGMA_MESSAGE:
StringPragma (&B, MakeMessage);
break;
case PRAGMA_OPTIMIZE:
FlagPragma (&B, &Optimize);
break;