User Tools

Site Tools


define

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Last revisionBoth sides next revision
define [2018/06/08 04:04] – created wolfgangriedmanndefine [2018/06/08 05:46] wolfgangriedmann
Line 14: Line 14:
 Why X# has been returned to the VO style has been explained by Robert v.d.Hulst: Why X# has been returned to the VO style has been explained by Robert v.d.Hulst:
  
-For me the most important reason to switch back from #define to DEFINE is the way it was implemented and the consequences of this implementation.+//For me the most important reason to switch back from #define to DEFINE is the way it was implemented and the consequences of this implementation.
 In Vulcan the preprocessor (and the X# preprocessor a well) do a "dumb" Search and Replace for defines and this has unwanted side effects. In Vulcan the preprocessor (and the X# preprocessor a well) do a "dumb" Search and Replace for defines and this has unwanted side effects.
-Consider the following code:+Consider the following code://
  
 <code>#define DELETE 1 <code>#define DELETE 1
 Function Delete(nRec as LONG) AS LOGIC</code> Function Delete(nRec as LONG) AS LOGIC</code>
  
-If the preprocessor compatibility command line option (/vo8) is switched on, then this will be preprocessor to:+//If the preprocessor compatibility command line option (/vo8) is switched on, then this will be preprocessor to://
  
 <code>FUNCTION 1(nRec as LONG) AS LOGIC</code> <code>FUNCTION 1(nRec as LONG) AS LOGIC</code>
  
-Please note how the name of the function was replaced by the value of the define.+//Please note how the name of the function was replaced by the value of the define.
 This causes many cryptic error messages, making it very difficult for new users to get started. This causes many cryptic error messages, making it very difficult for new users to get started.
-Without /vo8 this would only happen if the function name was written in ALL CAPITAL letters.+Without /vo8 this would only happen if the function name was written in ALL CAPITAL letters.//
  
-The way VO does it (and the way the DEFINE In X# is implemented) this is not handled by te preprocessor. In a later compiler phase the "binder" will lookup names and will find the value and substitute the name in the parse tree with the values.+//The way VO does it (and the way the DEFINE In X# is implemented) this is not handled by te preprocessor. In a later compiler phase the "binder" will lookup names and will find the value and substitute the name in the parse tree with the values.
 The DEFINE itself is stored as a global const value inside the same class where GLOBALs and FUNCTIONs are stored. The DEFINE itself is stored as a global const value inside the same class where GLOBALs and FUNCTIONs are stored.
  
-This does not have this side effect.+This does not have this side effect.//
define.txt · Last modified: 2019/08/21 06:02 by wolfgangriedmann