BlitzMax/语言/项目管理
外观
的 Import 语句提供了一种高效的方式将您的项目拆分为多个文件。导入的语法是
- Import 文件名
文件名 必须是一个用引号引起来的字符串文字,带有可识别的源文件扩展名,例如 'bmx'。
导入一个文件会使该文件中声明的所有全局变量、常量、函数和用户定义类型可用于当前正在编译的文件。
导入的文件可以被预编译。这意味着如果您有一个被拆分为多个源文件的项目,只有实际修改的文件(以及这些修改影响的文件)需要重新编译。例如,假设您有一个被拆分为两个源文件的项目
'file1.bmx Import "file2.bmx" Print Test() 'file2.bmx Function Test:String() Return "This is a test!" End Function
如果 file2.bmx 随后被修改,则两个文件都需要重新编译,因为不仅 file2.bmx 发生了变化,而且它的变化也可能影响 file1.bmx。
但是,如果只有 file1.bmx 被修改,则无需重新编译 file2.bmx。BlitzMax 的 BMK]] 实用程序会为您处理所有这些。
Import 的一个重要限制是您不能创建导入的“循环”。
Include 是另一种将项目拆分为多个文件的方式。Include 的语法与 Import 相同,但是包含的文件只是“逐字地”插入到包含文件中,而不是单独编译。
根据平台和项目,Include 可能比 Import 更快。它还允许您绕过 Import 的“无循环”限制。
Incbin 语句允许您将二进制文件与您的程序一起包含。Incbin 的语法与 Import 相同,但是可以指定任何类型的文件,而不仅仅是 'bmx' 文件。
您可以使用 IncbinPtr(返回一个 Byte Ptr)和 IncbinLen(返回一个 Int)访问包含在 incbin 文件中的二进制数据。IncbinPtr 和 IncbinLen 都需要一个文件名参数。例如
Incbin "data.bin" Local p:Byte Ptr=IncbinPtr( "data.bin" ) Local n:Int=IncbinLen( "data.bin" ) For Local i=0 Until n Print "Byte "+i+":"+p[i] Next