VB6 beginners tutorial - Learn VB6

Advanced VB6 tutorial - Learn Advanced VB6

Systems Analysis - System analysis and Design tutorial for Software Engineering

You are here: Visual Basic > Advanced VB6 tutorial > Chapter 20

Scope and Persistence of a Compiler Constant

The scope and persistence of a compiler constant depends on where it is declared.

If the #Const directive is used to define a compiler constant in code, that constant is Private to the module in which it is defined. This means that if you want to use the same constant in multiple modules, it must be defined in each module; you can’t use #Const to create Public compiler constants. Naturally, compiler constants defined in code persist between sessions. That is, they won’t go away unless you explicitly remove them from your source files.

If you need to use a Public compiler constant, you can define it either in the Project Properties dialog box or on the command line. Constants defined in either way are Public to all modules in a project. If you need to use the same constant throughout an entire project, this is obviously more convenient than manually entering it into every module and form.

Why are there two ways to define Public compiler constants? The scope is the same using either method, but the persistence differs. If you use the Project Properties dialog box to define a constant, it is saved with your project. If you close the project, any compiler constants you have defined as a property of the project will still be there the next time you open the project.

When you specify a compiler constant on the command line, it applies only to the instance of the project that you are running at that very moment. The primary reason for this is to enable you to use a different value for a Public compiler constant that you have already defined in the Project Properties dialog box. The value you use on the command line temporarily overrides the stored value, but doesn’t erase it. Consider that a Public compiler constant is defined under Project Properties such that USER="Wally", and that the following is entered on the command line:

vb.exe /make ProjectName.vbp /d USER="Alice"

Any conditional compiler tests will substitute the value "Alice" for the USER constant during the current debug session. The next time the project is run, however, USER will still be defined as "Wally" (unless it is overridden on the command line again, of course). Values set on the command line don’t persist between sessions.

What happens if you use the same name for a constant both in your code and in the Project Properties dialog box? The same thing that happens when a local variable has the same name as a global variable: The local variable overrides the global variable. The value of the compiler constant set in your code will override the Public constant set in the dialog box.

If BUDDYLIKESSOCKS = 0 is specified in the dialog box, for example, and #Const BUDDYLIKESSOCKS = 1 is specified in a code module, the value of BUDDYLIKESSOCKS will be 1 in the code module and 0 everywhere else. This enables you to override Public compiler constants on a module-by-module basis.


<< Previous | Contents | Next >>

Home | About Us | Privacy Policy | Contact Us

Copyright © | All Rights Reserved