| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 521 人关注过本帖
标题:数组堆栈的宏?????
只看楼主 加入收藏
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:7 
数组堆栈的宏?????
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include <assert.h>// 断言
//下面是数组堆栈的宏 函数依次是 判空 判满 压入 置顶 输出
#define generic_stack(stack_type,suffix,stack_size)        \
        static stack_type stack##suffix[stack_size];    \
        static int  top_element##suffix=-1;                 \
        int is_empty##suffix()                             \
        {                                                 \
           return top_element##suffix==-1;                 \
        }                                                  \
        void is_full##suffix()                              \
        {                                                   \
           return top_element##suffix==stack_size-1;         \
        }                                                    \
        int push##suffix(stack_type value)                     \
        {                                                     \
                assert(!is_full##suffix());                     \
               top_element##suffix+=1;                         \
         stack##suffix[top_element##suffix]=value;             \
        }                                                    \                            
        void pop##suffix()                                    \
        {                                                     \
                assert(!is_empty##suffix());                 \
               top_element##suffix-=1;                         \
        }                                                    \
        stack_type top##suffix()                            \
        {                                                    \    
               assert(!is_empty##suffix());                    \
              return stack##suffix[top_element##suffix];    \
        }                                                    
    



void main()
{
generic_stack(int,_int,10);
push_int(5);//输入5
push_int(10);
push_int(20);
    while(!is_empty_int())
    {
        printf("%d\n",top_int());//输出
        pop_int();
    }


}


通不过编译器啊!!!!!!!
搜索更多相关主题的帖子: static 
2013-01-30 20:26
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:30 
1 编码问题,使用宏,编码如果不小心常常都会出现这个问题
2 你的代码等价于 主函数中嵌套函数了,这样不通过的。例如下面:
int _tmain(int argc, _TCHAR* argv[])
{   
    void test() // 你的宏在main内,展开后就是主函数嵌套函数了,一定失败的
    {
        printf("sss");
    }


    return 1;

}

如果要写就写成模板吧,

这样写没有什么好处的,给自己调试 和查看代码都不带来什么优点

[ 本帖最后由 yuccn 于 2013-1-31 09:59 编辑 ]

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-01-31 09:54
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
学习了额
2013-01-31 10:54
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
顶起
2013-01-31 18:26
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
回复 4楼 h1023417614
为什么定起?还不知道错误的原因吗?

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-02-01 12:26
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
1.有两个函数类型搞错了,
2.嵌套了函数。

改了还是没用,,,,,,不过感觉真的没啥好处,,暂时还是觉得模版行
2013-02-01 22:25
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
发现了宏定义后面的\,这个符号后面必须马上回车,不能加任何一个字符,空格 tab都不行,,,,这里没做到啊


通过了
2013-02-01 22:37
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
收藏
得分:0 
学习下

同学习......同进步....你帮我......我帮你.....上善若水.....
2013-02-02 22:57
快速回复:数组堆栈的宏?????
数据加载中...
 
   



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

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