[Home]
[Search]
[D]
Last modified Dec 17, 2003.
Pragmas
Pragma:
pragma ( Identifier )
pragma ( Identifier , ExpressionList )
Pragmas are a way to pass special information to the compiler
and to add vendor specific extensions to D.
Pragmas can be used by themselves terminated with a ';',
they can influence a statement, a block of statements, a declaration, or
a block of declarations.
pragma(ident); // just by itself
pragma(ident) declaration; // influence one declaration
pragma(ident): // influence subsequent declarations
declaration;
declaration;
pragma(ident) // influence block of declarations
{ declaration;
declaration;
}
pragma(ident) statement; // influence one statement
pragma(ident) // influence block of statements
{ statement;
statement;
}
The kind of pragma it is is determined by the Identifier.
ExpressionList is a comma-separated list of
AssignExpressions. The AssignExpressions must be
parsable as expressions, but what they mean semantically
is up to the individual pragma semantics.
Predefined Pragmas
All implementations must support these, even if by just ignoring
them:
- msg
- Prints a message while compiling, the AssignExpressions must
be string literals:
pragma(msg, "compiling...");
Vendor Specific Pragmas
Vendor specific pragma Identifiers can be defined if they
are prefixed by the vendor's trademarked name, in a similar manner
to version identifiers:
pragma(DigitalMars_funky_extension) { ... }
Compilers must diagnose an error for unrecognized Pragmas,
even if they are vendor specific ones. This implies that vendor
specific pragmas should be wrapped in version statements:
version (DigitalMars)
{
pragma(DigitalMars_funky_extension) { ... }
}
Feedback and Comments
Add feedback and comments regarding this
page.
Copyright (c) 2003-2004 by Digital Mars, All Rights Reserved