Previous:Declaring identifiers Main Index Next:Identifier Name Collisions

#### #declare vs. #local

Identifiers may be declared either global using `#declare` or local using the `#local` directive.

Those created by the `#declare` directive are permanent in duration and global in scope. Once created, they are available throughout the scene and they are not released until all parsing is complete or until they are specifically released using `#undef`. See "Destroying Identifiers".

Those created by the `#local` directive are temporary in duration and local in scope. They temporarily override any identifiers with the same name. See "Identifier Name ".

If `#local` is used inside a `#macro` then the identifier is local to that macro. When the macro is invoked and the `#local` directive is parsed, the identifier is created. It persists until the `#end` directive of the macro is reached. At the `#end` directive, the identifier is destroyed. Subsequent invocations of the macro create totally new identifiers.

Use of `#local` within an include file but not in a macro, also creates a temporary identifier that is local to that include file. When the include file is included and the `#local` directive is parsed, the identifier is created. It persists until the end of the include file is reached. At the end of file the identifier is destroyed. Subsequent inclusions of the file totally new identifiers.

Use of `#local` in the main scene file (not in an include file and not in a macro) is identical to `#declare`. For clarity sake you should not use `#local` in a main file except in a macro.

There is currently no way to create permanent, yet local identifiers in POV-Ray.

Local identifiers may be specifically released early using `#undef` but in general there is no need to do so. See "Destroying Identifiers".

Previous:Declaring identifiers Main Index Next:Identifier Name Collisions