128 of 172
ZBasic Language Reference 121 ZX Microcontroller Family compiler with a different IDE that expects to see error message is a slightly different format for its “jump to the next error” function. 7.3.1 Controlling Warnings The types of warnings that the compiler will issue may be controlled from the command line using the -- warn option. Most of the warning types are enabled by default. It is desirable in some cases to allow the compiler to generate a certain type of warning message except for specific code sequences. This can be accomplished using the #pragma warning compiler directive in your program, the syntax of which is shown below. #pragma warning( <warning id> : <disposition> ) The <warning id> element is either a numeric value (included as part of the warning message) or one of the mnemonic warning identifiers used with the –warn option. The <disposition> element must be one of the keywords On, Off or Default, the effect of which is to enable the warning, disable the warning or set it to the default state. An example of the use of of the warning directive to disable a warning for useless code is shown below. Dim b as Byte Dim i as Integer Sub Main() b = 3 #pragma warning(7 : Off) If (b > 5) Then i = 100 ElseIf (b <= 5) Then i = 10 End If #pragma warning(7 : On) b = 25 End Sub Because of the immediately preceding assignment, the compiler can deduce the Boolean value of the conditions in both the If and ElseIf statements and will issue a “useless-code” warning indicating that that those conditions are always false. The first warning directive disables that warning and the second one unconditionally enables it. Often, it is undesirable to unconditionally enable a warning after disabling it as was done in this example. To avoid enabling a warning that was not previously enabled, two variations of the warning directive are provided to save the current set of enabled warnings (push) and restore them afterward (pop) instead of unconditionally re-enabling a warning. The syntax for the push and pop warning directives is illustrated in the modified example below. Dim b as Byte Dim i as Integer Sub Main() b = 3 #pragma warning(push) #pragma warning(7 : Off) If (b > 5) Then i = 100 ElseIf (b <= 5) Then i = 10 End If #pragma warning(pop) b = 25 End Sub