Written by aetherFox for QB Express Issue #9
条件编译是程序员世界各地知识库中灰尘般的角落的程序设计之一,而且是任何语言中最巧妙的增添之一。通常,为C程序员保留的东西,随着freeBASIC新的预处理器的强大,您现在可以使用条件编译来帮助您的程序。
预处理器允许您灵活地通过使用条件编译来更改生成代码的方式。采取这种情况:您正在调试程序中的代码,并且您想添加一些额外的代码来输出一些变量,但在最终版本中删除它们。代码将是这样的:
#define DEBUG
#ifdef DEBUG
Print "Debug Value"
#endif 'DEBUG
注意您不需要
#endif之后的评论,但这是否是良好做法。
基本上,上述代码检查是否定义了
DEBUG,如果已经定义了,则
#ifdef...#endif之间的代码将被执行。虽然这可能看起来很愚蠢,但这种使用是非常惊人的。如果您只需删除程序顶部的一行(
#define DEBUG),则所有添加的“调试代码”将不会发送到编译器 - 预处理程序会将其删除,从而减少最终可执行文件。
'Turn on debugging
#define DEBUG
'Turn off debugging
#undef DEBUG
#undef指令是一种“不定义”的方式,在这种情况下
DEBUG.虽然它是严格不需要的(只是注释掉'
#define DEBUG'行就足够了),它使代码更加清晰,并有其他用途:
#ifndef DEBUG
Print "Production Version"
#endif 'DEBUG
虽然不是最有用的示例,但这表明使用另一个指令:
#ifndef.如果未定义符号,则该指令将导致编译代码。
很像一般的编程语言,条件的感觉可以使用其他的变体
#else来反转:
#ifdef DEBUG
Print "Test Version"
#else
Print "Production Version"
#endif 'DEBUG
当然,这里有很多应用。谁说您只需要在调试代码上执行此操作?您可以通过简单地定义一个名称(如
TESTCODE)并使用预处理器指令来包含您的条件编译代码,实际上可以检查新的代码或一些测试例程的效果:
#define TESTCODE
#ifdef TESTCODE
BulletRoutine()
TestFireRoutine()
#endif
本教程的范围是有限的,但这种方法是由专业人士使用的。它使编程时的生活变得轻松。我在我自己的代码中使用了这种方法。要查看此代码的操作,请查看源代码
这里.
Avinash'aetherFox'Vora
avinashvora [at]
Gmail的 [dot]
同.
http://avinash.apeshell.net