User Tools

Site Tools


vulcan:defines

Differences

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

Link to this comparison view

vulcan:defines [2018/05/29 06:25] – created wolfgangriedmannvulcan:defines [2018/05/29 12:30] (current) wolfgangriedmann
Line 18: Line 18:
  
 If you are using the VO compatible class libraries and therefore need the defines from the VO SDK, you should include the library ''SDK_DEFINES.dll'' to your application. You can find this in your VO Xporter folder, probably in the C:\Program Files (x86)\XSharp\VOXPorter folder. If you are using the VO compatible class libraries and therefore need the defines from the VO SDK, you should include the library ''SDK_DEFINES.dll'' to your application. You can find this in your VO Xporter folder, probably in the C:\Program Files (x86)\XSharp\VOXPorter folder.
 +
 +In a discussion about this Robert wrote the following:
 +
 +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.
 +Consider the following code:
 +<code>#define DELETE 1
 +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:
 +<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.
 +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.
 +
 +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.
 +
 +This does not have this side effect.
vulcan/defines.1527575101.txt.gz · Last modified: 2018/05/29 06:25 by wolfgangriedmann