<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Pragmas</title><link>https://sourceforge.net/p/typp/wiki/Pragmas/</link><description>Recent changes to Pragmas</description><atom:link href="https://sourceforge.net/p/typp/wiki/Pragmas/feed" rel="self"/><language>en</language><lastBuildDate>Thu, 07 Jan 2016 12:20:53 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/typp/wiki/Pragmas/feed" rel="self" type="application/rss+xml"/><item><title>Pragmas modified by Cyder</title><link>https://sourceforge.net/p/typp/wiki/Pragmas/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;strong&gt;Pragma&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Function: &lt;code&gt;tpp.c: TPPLexer_ParsePragma&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The c11 standard describes a directive &lt;code&gt;#pragma&lt;/code&gt; and builtin macro &lt;code&gt;_Pragma&lt;/code&gt;, that can be used to perform compiler-specific function.&lt;br/&gt;
TPP Implements both the directive and the builtin macro, while also providing a set of builtin pragmas commonly seens in other preprocessors.&lt;/p&gt;
&lt;p&gt;Unknown pragmas are re-emitted by &lt;code&gt;TPPLexer_Next&lt;/code&gt;:&lt;br/&gt;
Config: &lt;code&gt;TPP_CONFIG_REEMIT_UNKNOWN_PRAGMAS&lt;/code&gt;&lt;br/&gt;
Check: &lt;code&gt;#if __has_feature(tpp_reemit_unknown_pragmas) || __has_extension(tpp_reemit_unknown_pragmas)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Every pragma can be written with the &lt;code&gt;#pragma&lt;/code&gt; directive of the &lt;code&gt;_Pragma&lt;/code&gt; macro:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;// The following 2 lines will be processed as identical.
_Pragma("once")
#pragma once
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;The following example shows the &lt;code&gt;push_macro&lt;/code&gt; pragma:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;#define foobar 42
#pragma push_macro("foobar")
#undef foobar
foobar // Expands to [foobar]
#pragma pop_macro("foobar")
foobar // Expands to [42]
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Supported pragmas&lt;/strong&gt;:&lt;br/&gt;
1. &lt;span&gt;[Pragma once]&lt;/span&gt; &lt;code&gt;#pragma once&lt;/code&gt;&lt;br/&gt;
2. &lt;span&gt;[Pragma warning]&lt;/span&gt; &lt;code&gt;#pragma warning&lt;/code&gt;&lt;br/&gt;
3. &lt;span&gt;[Pragma message]&lt;/span&gt; &lt;code&gt;#pragma message&lt;/code&gt;&lt;br/&gt;
4. &lt;span&gt;[Pragma push macro]&lt;/span&gt; &lt;code&gt;#pragma push_macro&lt;/code&gt;&lt;br/&gt;
5. &lt;span&gt;[Pragma region]&lt;/span&gt; &lt;code&gt;#pragma region&lt;/code&gt;&lt;br/&gt;
6. &lt;span&gt;[Pragma deprecated]&lt;/span&gt; &lt;code&gt;#pragma deprecated&lt;/code&gt;&lt;br/&gt;
7. &lt;span&gt;[Pragma error]&lt;/span&gt; &lt;code&gt;#pragma error&lt;/code&gt;&lt;br/&gt;
8. &lt;span&gt;[Pragma tpp_exec]&lt;/span&gt; &lt;code&gt;#pragma tpp_exec&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Cyder</dc:creator><pubDate>Thu, 07 Jan 2016 12:20:53 -0000</pubDate><guid>https://sourceforge.net29c8a0961f02db16e208e82bbb83e4bec156cccb</guid></item></channel></rss>