| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4214 人关注过本帖
标题:宏函数的问题。请问,宏函数里可以定义局部变量吗?
只看楼主 加入收藏
andrewkewang
Rank: 2
等 级:论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:15 
宏函数的问题。请问,宏函数里可以定义局部变量吗?
如下,C语言里,下面这个宏函数正确吗?我在代码里调用这个宏函数,可以编过。但是不知道语法上这样写到底对不对。如果对的话,这种定义方式有什么叫法吗?请指点!
#define SET_PROC(proc)\
{\
    int temp;\
    temp = get_temp();\
    temp.a = (proc);\
    set_temp(temp);\
}
搜索更多相关主题的帖子: C语言 
2015-02-02 09:38
sdwenyliu
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2015-1-22
收藏
得分:4 
就是宏函数定义  也就是字符替换而已
2015-02-02 10:18
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:4 
我印象里宏就是一堆代码的简称,你在写程序时需要这堆代码就用简称就行了,宏里定义变量应该是和普通写程序一样的吧,编译器会自动区分各自变量名的,即使名称相同也可通过宏名不同区分开。
个人认识,你别当真。没写过c,打算明年秋季修,先逛逛来感受下。
2015-02-02 10:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
以下是引用xzlxzlxzl在2015-2-2 10:39:04的发言:

我印象里宏就是一堆代码的简称,你在写程序时需要这堆代码就用简称就行了,宏里定义变量应该是和普通写程序一样的吧,编译器会自动区分各自变量名的,即使名称相同也可通过宏名不同区分开。
个人认识,你别当真。没写过c,打算明年秋季修,先逛逛来感受下。

沒用過,倒是知道的不少。

授人以渔,不授人以鱼。
2015-02-02 11:52
wwfdzh2012
Rank: 2
等 级:论坛游民
帖 子:88
专家分:27
注 册:2012-11-22
收藏
得分:4 
宏的作用就是让你不用写同一段代码,用宏名和参数代替,其实就是字符替代的作用,替换的过程在编译的时候进行,针对你说的,想在宏函数里面定义局部变量,这个习惯不太好,而且有时候会出错,你可以试试,在同一个函数里面用带定义局部变量的宏函数试下,连编译都过不了,因为同一个作用域,变量名不能相同,如果是在不同的函数里面,那就可以这样,需要注意的是标准c程序的变量定义是要在函数的开头那里定义,但是如果你用c++编译器来编译c程序倒是可以不用这样,随用随定义
2015-02-02 12:09
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:4 
其实宏替换就是傻瓜替换,它只是把对应的内容原封不动的换到代码中连个括号都不多加,因为宏从定义处起到文件结束或取消宏定义之前一直有效,所以如果你的变量作用域没有这么大或与其他变量名有重复最好不要这样做

一片落叶掉进了回忆的流年。
2015-02-02 12:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
這就叫不學好(好的不學)。

授人以渔,不授人以鱼。
2015-02-02 13:25
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
回复 7楼 TonyDeng
愈发觉得版主小时候可爱了,敢问版主身高体重

一片落叶掉进了回忆的流年。
2015-02-02 13:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用诸葛欧阳在2015-2-2 13:38:16的发言:

愈发觉得版主小时候可爱了,敢问版主身高体重

增一分則肥,減一分則瘦。

授人以渔,不授人以鱼。
2015-02-02 13:47
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
回复 6楼 诸葛欧阳
啊?我理解错了?我以为宏应该先预编译的,然后在obj里替换,obj里变量都已经是具体的地址了,所以无所谓是否变量同名的。
2015-02-02 13:53
快速回复:宏函数的问题。请问,宏函数里可以定义局部变量吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037100 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved