满意答案
sysjojo
2013.12.05
采纳率:52% 等级:12
已帮助:13231人
这种宏定义方式 有没有 特殊名称,不清楚。
OS_INT_ENTER() 带小括号,显然不能再叫 宏常量。
这种定义,是预编译 时的 字符串 替代 处理方式定义,也就是,
#define 书写的字符串 替换成的字符串
只要程序里出现 OS_INT_ENTER()
就用 OSIntNesting++,EA=1 这串东西替代
写的是逗号,就用逗号,写的是分号,就用分号,结尾是什么就什么。
例如:
#include
#include
#define OS_INT_ENTER() OSIntNesting++,EA=1
int main(){
int OSIntNesting=0,EA=0;
int x;
x = ( OS_INT_ENTER() );
printf("%d\n",x);
return 0;
}
-----------
源程序 x = ( OS_INT_ENTER() );
预编处理后 x = ( OSIntNesting++,EA=1);
小括号里是 “逗号表达式”,逗号表达式 的结果数值 等于 最 右 一个 表达式 的值,
最 右 一个 表达式 是 EA = 1, 结果数值 为 1。于是 x 得 1。
打印出 1。
00分享举报