NASM宏语言:如何判断参数非数值或小于1并抛出错误
NASM宏:参数非数值或小于1的校验实现
NASM没有直接提供%if_not_num指令,但可以通过对内置的%ifnum取反来实现“非数值”的判断。要实现「参数非数值」或「数值小于1」时抛出错误的逻辑,只需将两个条件用逻辑或(||)组合即可。
修改后的宏代码如下:
%macro my_macro 1 %if !%ifnum %1 || %1 < 1 %error "参数1必须是大于等于1的整数常量" %endif %endmacro
逻辑说明:
!%ifnum %1:对%ifnum %1的结果取反,判断参数%1不是一个可带正负号的整数常量||:逻辑或运算符,只要两个条件任意一个成立,就会执行%error抛出错误%1 < 1:判断参数的整数值小于1的情况
注意:%ifnum仅能检测整数常量,如果参数是表达式、符号或字符串,都会被判定为非数值,刚好符合需求。
内容的提问来源于stack exchange,提问作者user4035
相关产品推荐
相关产品推荐

