MASM包括不工作的警卫

时间:2018-02-05 01:50:27

标签: assembly include masm

我正在使用MASM 6.14 for DOS编写一个多模块应用程序。到目前为止,有四个asm文件,所有文件都包含" main.inc"在一开始。此外,我已启用/ Zf开关并强制所有符号都是公共的。要调用ML.EXE,而不是单独编译每个源文件,我使用响应文件,以便它可以一次处理所有文件。

in include main.inc:

ifndef __MAIN_INC__
       __MAIN_INC__ = 1

    ; some segment definitions here

else
    echo 'This file is being included more than once!'
endif

然而它无法正常工作。汇编程序不会显示任何警告,只有链接器会抱怨它(错误L2025:符号定义不止一次)。

似乎符号只在汇编程序正在使用的当前.asm文件中声明。也许这是预期的行为?如果是这样,我如何防止包含文件被多次包含?

1 个答案:

答案 0 :(得分:0)

传统上,如果有必要,在INC文件中测试和声明条件

#ifndef __MAIN_INC__
#define __MAIN_INC__

 .... Whatever needs to be here

 #endif

这并不意味着它无法在外面进行测试,但这是避免多次包含的最常用方法。