永发信息网

C语言宏定义:#define OS_INT_ENTER() OSIntNesting++,EA=1

答案:2  悬赏:30  手机版
解决时间 2021-02-27 06:31
C语言宏定义:#define OS_INT_ENTER() OSIntNesting++,EA=1 请问这种宏定义方式叫什么名,为什么OSIntNesting++,EA=1这里是用逗号,而不是分号,而且结尾没有分号呢?
最佳答案
这种宏定义方式 有没有 特殊名称,不清楚。
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。
全部回答
这种方式我觉得可以归为无参宏,就是不管怎么写替换字符串就行了。还有带参宏如 #define s(a,b) a*b 使用的时候可以 s(1,2) 值为2 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
招行百夫长卡指的是运通白金卡吗?
高达破坏者2哪种机体最好用?
某项目在5年建设期内每年年初向银行借款100万
新加坡的物价怎么那么高
为什么别人的电脑内存是4G,我的是16G,这个
辞退福利计提为什么不用待摊费用
重庆北站怎么做车去北广场坐动车啊,怎么最快
中国那娶老婆便宜
绝味鸭脖李家沱NO.2地址在哪,我要去那里办事
电能的储蓄比较困难,一般采用换能的方式存储
逼潮汕音汕音怎么读音
什么水果与柠檬榨成果汁最有美容效果呢
健缘日用品商行地址有知道的么?有点事想过去
经验主义和理性主义对心理学的发展有什么影响
“抄检大观园”时,当凤姐和王善保家的抄检到
推荐资讯
当爱从回忆里死去出自那首歌
霜打的桑叶有什么功效
单选题关于印度的正确叙述是A.耕地面积居世界
恰克尔腾布拉格地址有知道的么?有点事想过去
找一首基督教的歌曲 歌词第一句是:有些事情
我是AMD主板集成ATI显卡,现在我买了个视频分
下载,我同时在用emule和BT下载,下了一会儿,提
英萃镇在什么地方啊,我要过去处理事情
厦门市集美区地税局稽查局地址在什么地方,想
兴旺装饰材料城(董丈子卫生院西北)地址在什么
众康严氏推拿院这个地址在什么地方,我要处理
制作腐竹属于商标中的哪一类呀
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?