<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Conditional compilation</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>Recent changes to Conditional compilation</description><atom:link href="https://sourceforge.net/p/asil/wiki/Conditional%20compilation/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 18 Feb 2014 08:26:57 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/asil/wiki/Conditional%20compilation/feed" rel="self" type="application/rss+xml"/><item><title>Conditional compilation modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v9
+++ v10
@@ -18,7 +18,7 @@

 Deleting a **[conditional](keywords-conditional)** variable
 -----------------------------------
-Conditional compilation requires that you be able to cause the **[conditional](keywords-conditional)** variable to be deleted.  Use the syntax shown below.
+Conditional compilation requires that you be able to cause the **[conditional](keywords-conditional)** variable to be deleted.  Use the syntax shown below.  Please note a file can undeclare **[conditional](keywords-conditional)** variables only if those variables were declared in that file.  So **[conditional](keywords-conditional)** variables declared through a makefile or the compiler command line can't be undeclared.

 ~~~~
 :::text
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Tue, 18 Feb 2014 08:26:57 -0000</pubDate><guid>https://sourceforge.netaed131b1d4902c6b5e727483ae2ef6c0957cad1b</guid></item><item><title>Conditional compilation modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v8
+++ v9
@@ -2,9 +2,9 @@

 Overview
 --------
-One thing that JAVA lacks is the ability to compile select parts of the code only when needed.  This is something that C, C++, and C# all have.  Now ASIL has something similar.  Unlike other #if in C, C++, and C#; ASIL's support is integrated.  This means that a conditional block must begin and end in the same parent block.  (This prevents the situation where a closing brace ends up outside the #if block.  A lot of syntax errors could hide that way.)  Unlike C and C++, no preprocessor is required.  Unlike C#, **[conditional](keywords-conditional)** variables can have values.
+One thing that JAVA lacks is the ability to compile select parts of the code only when needed.  This is something that C, C++, and C# all have.  Now ASIL has something similar.  Unlike other #if in C, C++, and C#; ASIL's support is integrated.  This means that a conditional block must begin and end in the same parent block.  (This prevents the situation where a closing brace ends up outside the #if block.  A lot of syntax errors could hide that way.)  

-Please note that ASIL doesn't have or need a preprocessor like C/C++.  The values in a **[conditional](keywords-conditional)** variable can't be treated as code!
+Please note that ASIL doesn't have or need a preprocessor like C/C++ does.  The values in a **[conditional](keywords-conditional)** variable can't be treated as code!  Yet, unlike C#, **[conditional](keywords-conditional)** variables can have values.

 Declaring a **[conditional](keywords-conditional)** variable
 ------------------------------------
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Tue, 18 Feb 2014 08:05:50 -0000</pubDate><guid>https://sourceforge.net8a9590df0899d3cffafe0ea3542ce91427e5e6dd</guid></item><item><title>Conditional compilation modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -3,6 +3,8 @@
 Overview
 --------
 One thing that JAVA lacks is the ability to compile select parts of the code only when needed.  This is something that C, C++, and C# all have.  Now ASIL has something similar.  Unlike other #if in C, C++, and C#; ASIL's support is integrated.  This means that a conditional block must begin and end in the same parent block.  (This prevents the situation where a closing brace ends up outside the #if block.  A lot of syntax errors could hide that way.)  Unlike C and C++, no preprocessor is required.  Unlike C#, **[conditional](keywords-conditional)** variables can have values.
+
+Please note that ASIL doesn't have or need a preprocessor like C/C++.  The values in a **[conditional](keywords-conditional)** variable can't be treated as code!

 Declaring a **[conditional](keywords-conditional)** variable
 ------------------------------------
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Tue, 18 Feb 2014 08:04:47 -0000</pubDate><guid>https://sourceforge.netc3963e532be4172bf2ecf6a0534d2bd07531387f</guid></item><item><title>Conditional compilation modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -6,7 +6,7 @@

 Declaring a **[conditional](keywords-conditional)** variable
 ------------------------------------
-You can use any type needed as long as that type was compiled by a different project.  There are two syntax options.  The first declares a variable that can only be used in one way: was the variable declared or not.  The second stores a value and can be referenced anywhere you'd use a normal variable.  All conditional variables must be global in nature.  Compiler developers should provide a means to "declare" any conditional variable outside the file.  Conditional variables declared in this manner may not be duplicated in the code.  All typed conditional variables must be initialized immediately.  Conditional variables may not be changed once declared.
+You can use any **[const](keywords-const)** type needed as long as that type was compiled by a different project.  There are two syntax options.  The first declares a variable that can only be used in one way: was the variable declared or not.  The second stores a value and can be referenced anywhere you'd use a normal variable.  All conditional variables must be global in nature.  Compiler developers should provide a means to "declare" any conditional variable outside the file.  Conditional variables declared in this manner may not be duplicated in the code.  All typed conditional variables must be initialized immediately.  Conditional variables may not be changed once declared.

 ~~~~
 :::text
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Tue, 18 Feb 2014 08:01:01 -0000</pubDate><guid>https://sourceforge.nete081d766771ba532f2bafd82b4e86c88a54fac83</guid></item><item><title>Conditional compilation modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -6,7 +6,7 @@

 Declaring a **[conditional](keywords-conditional)** variable
 ------------------------------------
-You can use any type needed as long as instances of the type aren't needed to decide if the type should be compiled.  There are two syntax options.  The first declares a variable that can only be used in one way: was the variable declared or not.  The second storage a value and can be referenced anywhere you'd use a normal variable.  All conditional variables must be global in nature.  Compiler developers should provide a means to "declare" any conditional variable outside the file.  Conditional variables declared in this manner may not be duplicated in the code.  All typed conditional variables must be initialized immediately.  Conditional variables may not be changed once declared.
+You can use any type needed as long as that type was compiled by a different project.  There are two syntax options.  The first declares a variable that can only be used in one way: was the variable declared or not.  The second stores a value and can be referenced anywhere you'd use a normal variable.  All conditional variables must be global in nature.  Compiler developers should provide a means to "declare" any conditional variable outside the file.  Conditional variables declared in this manner may not be duplicated in the code.  All typed conditional variables must be initialized immediately.  Conditional variables may not be changed once declared.

 ~~~~
 :::text
@@ -28,7 +28,7 @@

 Referencing a **[conditional](keywords-conditional)** variable
 --------------------------------------
-Conditional compilation requires use of the **[conditionalif](keywords-conditionalif)** keyword in place of **[if](keywords-if)**.  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal **[if](keywords-if)** statement and even uses **[then](keywords-then)** and **[else](keywords-else)** keywords.  However, it can only reference **[conditional](keywords-conditional)** variables.  Normal variables are unavailable.  Note: If you want to test for a **[conditional](keywords-conditional)**'s existence, prefix the **[conditional](keywords-conditional)**'s identifier with the **[exists](keywords-exists)** keyword.  If the **[conditional](keywords-conditional)**'s identifier is used alone, it must be a boolean.
+Conditional compilation requires use of the **[conditionalif](keywords-conditionalif)** keyword in place of **[if](keywords-if)**.  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal **[if](keywords-if)** statement and even uses **[then](keywords-then)** and **[else](keywords-else)** keywords.  However, it can only reference **[conditional](keywords-conditional)** variables.  Normal variables are unavailable.  Note: If you want to test for a **[conditional](keywords-conditional)**'s existence, prefix the **[conditional](keywords-conditional)**'s identifier with the **[exists](keywords-exists)** keyword.  If the **[conditional](keywords-conditional)**'s identifier is used alone, it must be a boolean or the expression must evaluate to a boolean.  Any **[conditional](keywords-conditional)** variable that's referenced without the **[exists](keywords-exists)** keyword must exist.  If it doesn't, the compiler must issue an error.

 ~~~~
 :::text
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Tue, 18 Feb 2014 07:59:56 -0000</pubDate><guid>https://sourceforge.net74b317dd8e4a8883e88e71b19d215cbfb57ff445</guid></item><item><title>Conditional compilation modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -28,7 +28,7 @@

 Referencing a **[conditional](keywords-conditional)** variable
 --------------------------------------
-Conditional compilation requires use of the **[conditionalif](keywords-conditionalif)** keyword in place of **[if](keywords-if)**.  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal **[if](keywords-if)** statement and even uses **[then](keywords-then)** and **[else](keywords-else)** keywords.  However, it can only reference **[conditional](keywords-conditional)** variables.  Normal variables are unavailable.  Note: If you want to test for a **[conditional](keywords-conditional)**'s existence, prefix the **[conditional](keywords-conditional)**'s identifier with the **[exists](keywords-exists]** keyword.  If the **[conditional](keywords-conditional)**'s identifier is used alone, it must be a boolean.
+Conditional compilation requires use of the **[conditionalif](keywords-conditionalif)** keyword in place of **[if](keywords-if)**.  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal **[if](keywords-if)** statement and even uses **[then](keywords-then)** and **[else](keywords-else)** keywords.  However, it can only reference **[conditional](keywords-conditional)** variables.  Normal variables are unavailable.  Note: If you want to test for a **[conditional](keywords-conditional)**'s existence, prefix the **[conditional](keywords-conditional)**'s identifier with the **[exists](keywords-exists)** keyword.  If the **[conditional](keywords-conditional)**'s identifier is used alone, it must be a boolean.

 ~~~~
 :::text
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sun, 16 Feb 2014 10:20:14 -0000</pubDate><guid>https://sourceforge.net70cb69a40eec9058525360672f6b4e0654467612</guid></item><item><title>Conditional compilation modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -9,6 +9,7 @@
 You can use any type needed as long as instances of the type aren't needed to decide if the type should be compiled.  There are two syntax options.  The first declares a variable that can only be used in one way: was the variable declared or not.  The second storage a value and can be referenced anywhere you'd use a normal variable.  All conditional variables must be global in nature.  Compiler developers should provide a means to "declare" any conditional variable outside the file.  Conditional variables declared in this manner may not be duplicated in the code.  All typed conditional variables must be initialized immediately.  Conditional variables may not be changed once declared.

 ~~~~
+:::text
 conditional test ' Can only be referenced inside **conditionalif** statements.  May not be compared.
 conditional int test2 = 7 ' Can be used anywhere below the point where it is declared.
 ~~~~
@@ -18,6 +19,7 @@
 Conditional compilation requires that you be able to cause the **[conditional](keywords-conditional)** variable to be deleted.  Use the syntax shown below.

 ~~~~
+:::text
 conditional test ' now it's here
 conditional - test ' now it's gone
 conditional int test2 = 7 ' Now we have this one
@@ -26,13 +28,14 @@

 Referencing a **[conditional](keywords-conditional)** variable
 --------------------------------------
-Conditional compilation requires use of the **[conditionalif](keywords-conditionalif)** keyword in place of **[if](keywords-if)**.  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal **[if](keywords-if)** statement and even uses **[then](keywords-then)** and **[else](keywords-else)** keywords.  However, it can only reference **[conditional](keywords-conditional)** variables.  Normal variables are unavailable.
+Conditional compilation requires use of the **[conditionalif](keywords-conditionalif)** keyword in place of **[if](keywords-if)**.  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal **[if](keywords-if)** statement and even uses **[then](keywords-then)** and **[else](keywords-else)** keywords.  However, it can only reference **[conditional](keywords-conditional)** variables.  Normal variables are unavailable.  Note: If you want to test for a **[conditional](keywords-conditional)**'s existence, prefix the **[conditional](keywords-conditional)**'s identifier with the **[exists](keywords-exists]** keyword.  If the **[conditional](keywords-conditional)**'s identifier is used alone, it must be a boolean.

 ~~~~
+:::text
 conditional b
 conditional int c = 43

-conditionalif b then
+conditionalif exists b then
   class conditonalClass
     conditionalif c then ' If c doesn't exist, it is false; if it does exist, it is true; it's value doesn't matter
       ' Some code that only compiles if c is declared
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sun, 16 Feb 2014 10:19:44 -0000</pubDate><guid>https://sourceforge.net2cc2eb7f014e3f012ff0f6be57532b3a55ca7605</guid></item><item><title>Conditional compilation modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -2,20 +2,20 @@

 Overview
 --------
-One thing that JAVA lacks is the ability to compile select parts of the code only when needed.  This is something that C, C++, and C# all have.  Now ASIL has something similar.  Unlike other #if in C, C++, and C#; ASIL's support is integrated.  This means that a conditional block must begin and end in the same parent block.  Unlike C and C++, no preprocessor is required.  Unlike C#, [**conditional**] variables can have values.
+One thing that JAVA lacks is the ability to compile select parts of the code only when needed.  This is something that C, C++, and C# all have.  Now ASIL has something similar.  Unlike other #if in C, C++, and C#; ASIL's support is integrated.  This means that a conditional block must begin and end in the same parent block.  (This prevents the situation where a closing brace ends up outside the #if block.  A lot of syntax errors could hide that way.)  Unlike C and C++, no preprocessor is required.  Unlike C#, **[conditional](keywords-conditional)** variables can have values.

-Declaring a [**conditional**] variable
+Declaring a **[conditional](keywords-conditional)** variable
 ------------------------------------
 You can use any type needed as long as instances of the type aren't needed to decide if the type should be compiled.  There are two syntax options.  The first declares a variable that can only be used in one way: was the variable declared or not.  The second storage a value and can be referenced anywhere you'd use a normal variable.  All conditional variables must be global in nature.  Compiler developers should provide a means to "declare" any conditional variable outside the file.  Conditional variables declared in this manner may not be duplicated in the code.  All typed conditional variables must be initialized immediately.  Conditional variables may not be changed once declared.

 ~~~~
-conditional test ' Can only be referenced inside [**conditionalif**] statements.  May not be compared.
+conditional test ' Can only be referenced inside **conditionalif** statements.  May not be compared.
 conditional int test2 = 7 ' Can be used anywhere below the point where it is declared.
 ~~~~

-Deleting a [**conditional**] variable
+Deleting a **[conditional](keywords-conditional)** variable
 -----------------------------------
-Conditional compilation requires that you be able to cause the [**conditional**] variable to be deleted.  Use the syntax shown below.
+Conditional compilation requires that you be able to cause the **[conditional](keywords-conditional)** variable to be deleted.  Use the syntax shown below.

 ~~~~
 conditional test ' now it's here
@@ -24,9 +24,9 @@
 conditional - test2 ' Now it's gone too
 ~~~~

-Referencing a [**conditional**] variable
+Referencing a **[conditional](keywords-conditional)** variable
 --------------------------------------
-Conditional compilation requires use of the [**conditionalif**] keyword in place of [**if**].  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal [**if**] statement and even uses [**then**] and [**else**] keywords.  However, it can only reference [**conditional**] variables.  Normal variables are unavailable.
+Conditional compilation requires use of the **[conditionalif](keywords-conditionalif)** keyword in place of **[if](keywords-if)**.  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal **[if](keywords-if)** statement and even uses **[then](keywords-then)** and **[else](keywords-else)** keywords.  However, it can only reference **[conditional](keywords-conditional)** variables.  Normal variables are unavailable.

 ~~~~
 conditional b
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 13 Feb 2014 23:24:47 -0000</pubDate><guid>https://sourceforge.net6655c6e49d25f4318c3c7e527bd070b0fe90b301</guid></item><item><title>Conditional compilation modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -2,20 +2,20 @@

 Overview
 --------
-One thing that JAVA lacks is the ability to compile select parts of the code only when needed.  This is something that C, C++, and C# all have.  Now ASIL has something similar.  Unlike other #if in C, C++, and C#; ASIL's support is integrated.  This means that a conditional block must begin and end in the same parent block.  Unlike C and C++, no preprocessor is required.  Unlike C#, **conditional** variables can have values.
+One thing that JAVA lacks is the ability to compile select parts of the code only when needed.  This is something that C, C++, and C# all have.  Now ASIL has something similar.  Unlike other #if in C, C++, and C#; ASIL's support is integrated.  This means that a conditional block must begin and end in the same parent block.  Unlike C and C++, no preprocessor is required.  Unlike C#, [**conditional**] variables can have values.

-Declaring a **conditional** variable
+Declaring a [**conditional**] variable
 ------------------------------------
-You can use any type needed as long as instances of the type aren't needed to decide if the type should be compiled.  There are two syntax options.  The first declares a variable that can only be used in one way: was the variable declared or not.  The second storage a value and can be referenced anywhere you'd use a normal variable.  All conditional variables must be global in nature.  Compiler developers should provide a means to "declare" any conditional variable outside the file.  Conditional variables declared in this manner may not be duplicated in the code.  All typed conditional variables must be initialized immediately.
+You can use any type needed as long as instances of the type aren't needed to decide if the type should be compiled.  There are two syntax options.  The first declares a variable that can only be used in one way: was the variable declared or not.  The second storage a value and can be referenced anywhere you'd use a normal variable.  All conditional variables must be global in nature.  Compiler developers should provide a means to "declare" any conditional variable outside the file.  Conditional variables declared in this manner may not be duplicated in the code.  All typed conditional variables must be initialized immediately.  Conditional variables may not be changed once declared.

 ~~~~
-conditional test ' Can only be referenced inside **[conditionalif]** statements.  May not be compared.
+conditional test ' Can only be referenced inside [**conditionalif**] statements.  May not be compared.
 conditional int test2 = 7 ' Can be used anywhere below the point where it is declared.
 ~~~~

-Deleting a **conditional** variable
+Deleting a [**conditional**] variable
 -----------------------------------
-Conditional compilation requires that you be able to cause the **conditional** variable to be deleted.  Use the syntax shown below.
+Conditional compilation requires that you be able to cause the [**conditional**] variable to be deleted.  Use the syntax shown below.

 ~~~~
 conditional test ' now it's here
@@ -24,9 +24,9 @@
 conditional - test2 ' Now it's gone too
 ~~~~

-Referencing a **conditional** variable
+Referencing a [**conditional**] variable
 --------------------------------------
-Conditional compilation requires use of the **[conditionalif]** keyword in place of **[if]**.  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal if statement and even uses **[then]** and **[else]** keywords.  However, it can only reference **[conditional]** variables.  Normal variables are unavailable.
+Conditional compilation requires use of the [**conditionalif**] keyword in place of [**if**].  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal [**if**] statement and even uses [**then**] and [**else**] keywords.  However, it can only reference [**conditional**] variables.  Normal variables are unavailable.

 ~~~~
 conditional b
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sat, 08 Feb 2014 13:47:33 -0000</pubDate><guid>https://sourceforge.net0f7a132a7bbde4ce466d3e44b83b6a6a855ede41</guid></item><item><title>Conditional compilation modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Conditional%2520compilation/</link><description>&lt;div class="markdown_content"&gt;&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#declaring-a-conditional-variable"&gt;Declaring a conditional variable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#deleting-a-conditional-variable"&gt;Deleting a conditional variable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#referencing-a-conditional-variable"&gt;Referencing a conditional variable&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;One thing that JAVA lacks is the ability to compile select parts of the code only when needed.  This is something that C, C++, and C# all have.  Now ASIL has something similar.  Unlike other #if in C, C++, and C#; ASIL's support is integrated.  This means that a conditional block must begin and end in the same parent block.  Unlike C and C++, no preprocessor is required.  Unlike C#, &lt;strong&gt;conditional&lt;/strong&gt; variables can have values.&lt;/p&gt;
&lt;h2 id="declaring-a-conditional-variable"&gt;Declaring a &lt;strong&gt;conditional&lt;/strong&gt; variable&lt;/h2&gt;
&lt;p&gt;You can use any type needed as long as instances of the type aren't needed to decide if the type should be compiled.  There are two syntax options.  The first declares a variable that can only be used in one way: was the variable declared or not.  The second storage a value and can be referenced anywhere you'd use a normal variable.  All conditional variables must be global in nature.  Compiler developers should provide a means to "declare" any conditional variable outside the file.  Conditional variables declared in this manner may not be duplicated in the code.  All typed conditional variables must be initialized immediately.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;conditional&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;Can&lt;/span&gt; &lt;span class="n"&gt;only&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;referenced&lt;/span&gt; &lt;span class="n"&gt;inside&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;conditionalif&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;statements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;  &lt;span class="n"&gt;May&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;compared&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="n"&gt;conditional&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;test2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;Can&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;used&lt;/span&gt; &lt;span class="n"&gt;anywhere&lt;/span&gt; &lt;span class="n"&gt;below&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;point&lt;/span&gt; &lt;span class="n"&gt;where&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;declared&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="deleting-a-conditional-variable"&gt;Deleting a &lt;strong&gt;conditional&lt;/strong&gt; variable&lt;/h2&gt;
&lt;p&gt;Conditional compilation requires that you be able to cause the &lt;strong&gt;conditional&lt;/strong&gt; variable to be deleted.  Use the syntax shown below.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;conditional&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="n"&gt;here&lt;/span&gt;
&lt;span class="n"&gt;conditional&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="n"&gt;gone&lt;/span&gt;
&lt;span class="n"&gt;conditional&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;test2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;Now&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;have&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;one&lt;/span&gt;
&lt;span class="n"&gt;conditional&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;test2&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;Now&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="n"&gt;gone&lt;/span&gt; &lt;span class="n"&gt;too&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="referencing-a-conditional-variable"&gt;Referencing a &lt;strong&gt;conditional&lt;/strong&gt; variable&lt;/h2&gt;
&lt;p&gt;Conditional compilation requires use of the &lt;strong&gt;&lt;span&gt;&lt;span&gt;[conditionalif]&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; keyword in place of &lt;strong&gt;&lt;span&gt;&lt;span&gt;[if]&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;.  It's ASIL's counterpart of #if in C, C++, and C#.  It works like a normal if statement and even uses &lt;strong&gt;&lt;span&gt;&lt;span&gt;[then]&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;span&gt;&lt;span&gt;[else]&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; keywords.  However, it can only reference &lt;strong&gt;&lt;span&gt;&lt;span&gt;[conditional]&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; variables.  Normal variables are unavailable.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;conditional&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
&lt;span class="n"&gt;conditional&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;43&lt;/span&gt;

&lt;span class="n"&gt;conditionalif&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;then&lt;/span&gt;
  &lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="n"&gt;conditonalClass&lt;/span&gt;
    &lt;span class="n"&gt;conditionalif&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;If&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;doesn&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;exist&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;does&lt;/span&gt; &lt;span class="n"&gt;exist&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="n"&gt;doesn&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;matter&lt;/span&gt;
      &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;Some&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;only&lt;/span&gt; &lt;span class="n"&gt;compiles&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;declared&lt;/span&gt;

    &lt;span class="n"&gt;conditionalif&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;34&lt;/span&gt; &lt;span class="n"&gt;then&lt;/span&gt;
      &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;Some&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;only&lt;/span&gt; &lt;span class="n"&gt;compiles&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;equals&lt;/span&gt; &lt;span class="mi"&gt;34&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
      &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;Some&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;only&lt;/span&gt; &lt;span class="n"&gt;compiles&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;doesn&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;equal&lt;/span&gt; &lt;span class="mi"&gt;34&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 06 Feb 2014 16:57:26 -0000</pubDate><guid>https://sourceforge.net69b588ad1552dde1a332323c8b55b763b67db24c</guid></item></channel></rss>